Expand description
An implementation of Ruby’s pseudo-random number generator, or PRNG.
The PRNG produces a deterministic sequence of bits which approximate true randomness. The sequence may be represented by integers, floats, or binary strings.
The generator may be initialized with either a system-generated or user-supplied seed value.
PRNGs are currently implemented as a modified Mersenne Twister with a period of 2**19937-1.
§Implementation notes
This RNG reproduces the same random bytes and floats as MRI. It may differ when returning elements confined to a distribution.
§Examples
Generate integers:
use spinoso_random::Random;
let seed = [627457_u32, 697550, 16438, 41926];
let mut random = Random::with_array_seed(seed);
let rand = random.next_int32();
Generate random numbers in a range:
use spinoso_random::{rand, Max, Rand, Random};
let mut random = Random::new()?;
let max = Max::Integer(10);
let mut rand = rand(&mut random, max)?;
assert!(matches!(rand, Rand::Integer(x) if x < 10));
§no_std
This crate is no_std
compatible when built without the std
feature. This
crate does not depend on alloc
.
§Crate features
All features are enabled by default.
- rand-method - Enables range sampling methods for the
rand()
function. Activating this feature also activates the rand_core feature. Dropping this feature removes therand
dependency. - rand_core - Enables implementations of
RngCore
on theRandom
type. Dropping this feature removes therand_core
dependency. - std - Enables a dependency on the Rust Standard Library. Activating
this feature enables
std::error::Error
impls on error types in this crate.
Structs§
- Error that indicates a random number could not be generated with the given bounds.
- Error that indicates a
Random
random number generator failed to initialize. - Error that indicates the system source of cryptographically secure randomness failed to read sufficient bytes to create a new seed.
- Random provides an interface to Ruby’s pseudo-random number generator, or PRNG.
- Error that indicates the system source of cryptographically secure randomness failed to read the requested bytes.
Enums§
- Sum type of all errors possibly returned from
Random
functions. - A range constraint for generating random numbers.
- A generated random number.
Functions§
- Read a new
Random
seed, using platform-provided randomness. - Generate random numbers bounded from below by 0 and above by the given max.
- Convert a byte array into a reseeding key of
u32
s. - Read random bytes, using platform-provided randomness.