You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
2 years ago | |
|---|---|---|
| .. | ||
| benches | 2 years ago | |
| src | 2 years ago | |
| tests | 2 years ago | |
| Android.bp | 2 years ago | |
| CHANGELOG.md | 2 years ago | |
| Cargo.toml | 2 years ago | |
| Cargo.toml.orig | 2 years ago | |
| LICENSE | 2 years ago | |
| LICENSE-APACHE | 2 years ago | |
| LICENSE-MIT | 2 years ago | |
| METADATA | 2 years ago | |
| MODULE_LICENSE_APACHE2 | 2 years ago | |
| OWNERS | 2 years ago | |
| README.md | 2 years ago | |
| cargo2android.json | 2 years ago | |
README.md
fastrand
A simple and fast random number generator.
The implementation uses Wyrand, a simple and fast generator but not cryptographically secure.
Examples
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];
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 rng = fastrand::Rng::new();
let mut bytes: Vec<u8> = repeat_with(|| rng.u8(..)).take(10_000).collect();
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
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.