Crate spinoso_random[][src]

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 the rand dependency.
  • rand-traits - Enables implementations of RngCore on Random and Mt types. Dropping this feature removes the rand_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.

The 32-bit Ruby flavor of the Mersenne Twister pseudorandom number generator.

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.

Maxrandom-rand

A range constraint for generating random numbers.

Randrandom-rand

A generated random number.

Functions

Read a new Random seed, using platform-provided randomness.

randrandom-rand

Generate random numbers bounded from below by 0 and above by the given max.

Convert a byte array into a reseeding key of u32s.

Read random bytes, using platform-provided randomness.