Crate spinoso_random
source ·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:
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:
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.
- random-rand - Enables range sampling methods for the
rand()
function. Activating this feature also activates the rand-traits feature. Dropping this feature removes therand
dependency. - rand-traits - 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.Max
random-rand
A range constraint for generating random numbers.
Rand
random-rand
A generated random number.
Functions
rand
random-rand
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.