| Vulnerabilities | |||||
|---|---|---|---|---|---|
| Version | Suggest | Low | Medium | High | Critical |
| 2.4.1 | 0 | 0 | 0 | 0 | 0 |
| 2.4.0 | 0 | 0 | 0 | 0 | 0 |
| 2.3.0 | 0 | 0 | 0 | 0 | 0 |
| 2.2.0 | 0 | 0 | 0 | 0 | 0 |
| 2.1.1 | 0 | 0 | 0 | 0 | 0 |
| 2.1.0 | 0 | 0 | 0 | 0 | 0 |
| 2.0.2 | 0 | 0 | 0 | 0 | 0 |
| 2.0.1 | 0 | 0 | 0 | 0 | 0 |
| 2.0.0 | 0 | 0 | 0 | 0 | 0 |
| 1.9.0 | 0 | 0 | 0 | 0 | 0 |
| 1.8.0 | 0 | 0 | 0 | 0 | 0 |
| 1.7.0 | 0 | 0 | 0 | 0 | 0 |
| 1.6.0 | 0 | 0 | 0 | 0 | 0 |
| 1.5.0 | 0 | 0 | 0 | 0 | 0 |
| 1.4.1 | 0 | 0 | 0 | 0 | 0 |
| 1.4.0 | 0 | 0 | 0 | 0 | 0 |
| 1.3.5 | 0 | 0 | 0 | 0 | 0 |
| 1.3.4 | 0 | 0 | 0 | 0 | 0 |
| 1.3.3 | 0 | 0 | 0 | 0 | 0 |
| 1.3.2 | 0 | 0 | 0 | 0 | 0 |
| 1.3.1 | 0 | 0 | 0 | 0 | 0 |
| 1.3.0 | 0 | 0 | 0 | 0 | 0 |
| 1.2.4 | 0 | 0 | 0 | 0 | 0 |
| 1.2.3 | 0 | 0 | 0 | 0 | 0 |
| 1.2.2 | 0 | 0 | 0 | 0 | 0 |
| 1.2.1 | 0 | 0 | 0 | 0 | 0 |
| 1.2.0 | 0 | 0 | 0 | 0 | 0 |
| 1.1.0 | 0 | 0 | 0 | 0 | 0 |
| 1.0.0 | 0 | 0 | 0 | 0 | 0 |
2.4.1 - This version is safe to use because it has no known security vulnerabilities at this time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
MIT - MIT LicenseA simple and fast random number generator.
The implementation uses Wyrand, a simple and fast generator but not cryptographically secure.
Flip a coin:
if fastrand::bool() {
println!("heads");
} else {
println!("tails");
}Generate a random i32:
let num = fastrand::i32(..);Choose a random element in an array:
let v = vec![1, 2, 3, 4, 5];
let i = fastrand::usize(..v.len());
let elem = v[i];Sample values from an array with O(n) complexity (n is the length of the array):
fastrand::choose_multiple([1, 4, 5], 2);
fastrand::choose_multiple(0..20, 12);Shuffle an array:
let mut v = vec![1, 2, 3, 4, 5];
fastrand::shuffle(&mut v);Generate a random Vec or String:
use std::iter::repeat_with;
let v: Vec<i32> = repeat_with(|| fastrand::i32(..)).take(10).collect();
let s: String = repeat_with(fastrand::alphanumeric).take(10).collect();To get reproducible results on every run, initialize the generator with a seed:
// Pick an arbitrary number as seed.
fastrand::seed(7);
// Now this prints the same number on every run:
println!("{}", fastrand::u32(..));To be more efficient, create a new Rng instance instead of using the thread-local
generator:
use std::iter::repeat_with;
let mut rng = fastrand::Rng::new();
let mut bytes: Vec<u8> = repeat_with(|| rng.u8(..)).take(10_000).collect();This crate aims to expose a core set of useful randomness primitives. For more niche algorithms, consider using the fastrand-contrib crate alongside this one.
std (enabled by default): Enables the std library. This is required for the global
generator and global entropy. Without this feature, [Rng] can only be instantiated using
the with_seed method.js: Assumes that WebAssembly targets are being run in a JavaScript environment.Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.