Expand description
Mersenne Twister random number generators.
This is a native Rust implementation of a selection of Mersenne Twister generators. Mersenne Twister is not suitable for cryptographic use.
This crate provides:
Mt19937GenRand32
, the original reference Mersenne Twister implementation known asMT19937
. This is a good choice on both 32-bit and 64-bit CPUs (for 32-bit output).Mt19937GenRand64
, the 64-bit variant ofMT19937
known asMT19937-64
. This algorithm produces a different output stream thanMT19937
and produces 64-bit output. This is a good choice on 64-bit CPUs.
Both of these RNGs use approximately 2.5 kilobytes of state.
Mt19937GenRand32
uses a 32-bit seed. Mt19937GenRand64
uses a 64-bit
seed. Both can be seeded from an iterator of seeds.
Both RNGs implement a recover
constructor which can reconstruct the RNG
state from a sequence of output samples.
Usage
You can seed a RNG and begin sampling it:
// Create the RNG.
let mut rng = Mt64::new(0x1234_567_89ab_cdef_u64);
// start grabbing randomness from rng...
let mut buf = vec![0; 512];
rng.fill_bytes(&mut buf);
Or if you want to use the default (fixed) seeds that are specified in the reference implementations:
let default = Mt::default();
let mt = Mt::new_unseeded();
assert_eq!(default, mt);
Crate Features
rand_mt
is no_std
compatible. rand_mt
has several optional features
that are enabled by default:
- rand-traits - Enables a dependency on
rand_core
. Activating this feature implementsRngCore
andSeedableRng
on the RNGs in this crate. - std - Enables a dependency on the Rust Standard Library. Activating
this feature enables
std::error::Error
impls on error types in this crate.
Mersenne Twister requires approximately 2.5 kilobytes of internal state. To
make the RNGs implemented in this crate practical to embed in other structs,
you may wish to store the RNG in a Box
.
Structs
- The 32-bit flavor of the Mersenne Twister pseudorandom number generator.
- The 64-bit flavor of the Mersenne Twister pseudorandom number generator.
Enums
- Error returned from fallible Mersenne Twister recovery constructors.
Type Definitions
- A type alias for
Mt19937GenRand32
, 32-bit Mersenne Twister. - A type alias for
Mt19937GenRand64
, 64-bit Mersenne Twister.