pub struct SplitMix64 { /* private fields */ }Expand description
SplitMix64 generator (Steele, Lea & Flood 2014).
A single-u64-state PRNG chosen for its tiny, portable, branch-free core: it
produces a byte-identical stream for a given seed on every platform, which the
equivalence harness relies on. It also caches the second Box–Muller variate so
standard_normal costs one transcendental pair per two draws.
Implementations§
Source§impl SplitMix64
impl SplitMix64
Sourcepub const fn new(seed: u64) -> Self
pub const fn new(seed: u64) -> Self
Creates a generator seeded with seed.
§Arguments
seed— initial state; anyu64is valid (including0).
Sourcepub const fn next_u64(&mut self) -> u64
pub const fn next_u64(&mut self) -> u64
Draws the next 64-bit value and advances the state.
§Returns
A pseudo-random u64 uniformly distributed over the full range.
Sourcepub fn next_f64(&mut self) -> f64
pub fn next_f64(&mut self) -> f64
Draws a uniform value in [0, 1) with 53 bits of resolution.
§Returns
A pseudo-random f64 in the half-open unit interval.
Sourcepub fn standard_normal(&mut self) -> f64
pub fn standard_normal(&mut self) -> f64
Draws a standard-normal variate via Box–Muller, caching the spare.
The transform produces two independent N(0,1) variates per call; the second is cached and returned on the following call, halving the transcendental cost over a long stream.
§Returns
A pseudo-random f64 distributed as N(0, 1).
Trait Implementations§
Source§impl Clone for SplitMix64
impl Clone for SplitMix64
Source§fn clone(&self) -> SplitMix64
fn clone(&self) -> SplitMix64
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more