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 bool else
Generate a random i32
:
let num = i32;
Choose a random element in an array:
let v = vec!;
let i = usize;
let elem = v;
Sample values from an array with O(n)
complexity (n
is the length of array):
;
choose_multiple;
choose_multiple
Shuffle an array:
let mut v = vec!;
shuffle;
Generate a random Vec
or String
:
use repeat_with;
let v: = repeat_with.take.collect;
let s: String = repeat_with.take.collect;
To get reproducible results on every run, initialize the generator with a seed:
// Pick an arbitrary number as seed.
seed;
// Now this prints the same number on every run:
println!;
To be more efficient, create a new Rng
instance instead of using the thread-local
generator:
use repeat_with;
let rng = new;
let mut bytes: = repeat_with.take.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.
Features
std
(enabled by default): Enables thestd
library. This is required for the global generator and global entropy. Without this feature, [Rng
] can only be instantiated using thewith_seed
method.js
: Assumes that WebAssembly targets are being run in a JavaScript environment.
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.