Skip to main content

probability_rs/rng/
mod.rs

1//! Internal pseudo-random number generators without external dependencies.
2//! This module declares the core RNG trait and exposes concrete RNGs as submodules.
3
4/// Minimal trait for random number generation.
5pub trait RngCore {
6    fn next_u64(&mut self) -> u64;
7    #[inline]
8    fn next_f64(&mut self) -> f64 {
9        // Use 53 bits of precision for f64 in [0,1).
10        const DEN: f64 = (1u64 << 53) as f64;
11        ((self.next_u64() >> 11) as f64) / DEN
12    }
13}
14
15pub mod pcg32;
16pub mod splitmix64;
17pub mod xoroshiro128;
18pub mod xoshiro256;
19
20// Re-export commonly used RNGs for ergonomic access: rng::SplitMix64
21pub use pcg32::Pcg32;
22pub use splitmix64::SplitMix64;
23pub use xoroshiro128::Xoroshiro128PlusPlus;