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;