pub struct Xoshiro128PlusPlus { /* private fields */ }Expand description
A xoshiro128++ random number generator.
The xoshiro128++ algorithm is not suitable for cryptographic purposes, but is very fast and has excellent statistical properties.
The algorithm used here is translated from the xoshiro128plusplus.c
reference source code by
David Blackman and Sebastiano Vigna.
Implementations§
Source§impl Xoshiro128PlusPlus
impl Xoshiro128PlusPlus
Sourcepub fn jump(&mut self)
pub fn jump(&mut self)
Jump forward, equivalently to 2^64 calls to next_u32().
This can be used to generate 2^64 non-overlapping subsequences for parallel computations.
use rand_xoshiro::rand_core::SeedableRng;
use rand_xoshiro::Xoroshiro128PlusPlus;
let rng1 = Xoroshiro128PlusPlus::seed_from_u64(0);
let mut rng2 = rng1.clone();
rng2.jump();
let mut rng3 = rng2.clone();
rng3.jump();Sourcepub fn long_jump(&mut self)
pub fn long_jump(&mut self)
Jump forward, equivalently to 2^96 calls to next_u32().
This can be used to generate 2^32 starting points, from each of which
jump() will generate 2^32 non-overlapping subsequences for parallel
distributed computations.
Sourcepub fn initialize_states(seed: u64, num_states: usize) -> Vec<Self>
Available on non-CUDA only.
pub fn initialize_states(seed: u64, num_states: usize) -> Vec<Self>
Initializes multiple RNG states such that each state corresponds to a subsequence
separated by 2**64 steps from eachother in the main sequence. This ensures that as long as
no state requests more than 2**64 random numbers, the states are guaranteed to be fully independent.
Trait Implementations§
Source§impl Clone for Xoshiro128PlusPlus
impl Clone for Xoshiro128PlusPlus
Source§fn clone(&self) -> Xoshiro128PlusPlus
fn clone(&self) -> Xoshiro128PlusPlus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Xoshiro128PlusPlus
impl Debug for Xoshiro128PlusPlus
Source§impl PartialEq for Xoshiro128PlusPlus
impl PartialEq for Xoshiro128PlusPlus
Source§fn eq(&self, other: &Xoshiro128PlusPlus) -> bool
fn eq(&self, other: &Xoshiro128PlusPlus) -> bool
self and other values to be equal, and is used by ==.Source§impl RngCore for Xoshiro128PlusPlus
impl RngCore for Xoshiro128PlusPlus
Source§fn fill_bytes(&mut self, dest: &mut [u8])
fn fill_bytes(&mut self, dest: &mut [u8])
dest with random data. Read moreSource§impl SeedableRng for Xoshiro128PlusPlus
impl SeedableRng for Xoshiro128PlusPlus
Source§fn from_seed(seed: [u8; 16]) -> Xoshiro128PlusPlus
fn from_seed(seed: [u8; 16]) -> Xoshiro128PlusPlus
Create a new Xoshiro128PlusPlus. If seed is entirely 0, it will be
mapped to a different seed.
Source§fn seed_from_u64(seed: u64) -> Xoshiro128PlusPlus
fn seed_from_u64(seed: u64) -> Xoshiro128PlusPlus
Seed a Xoshiro128PlusPlus from a u64 using SplitMix64.
impl Copy for Xoshiro128PlusPlus
impl DeviceCopy for Xoshiro128PlusPlus
impl Eq for Xoshiro128PlusPlus
impl StructuralPartialEq for Xoshiro128PlusPlus
Auto Trait Implementations§
impl Freeze for Xoshiro128PlusPlus
impl RefUnwindSafe for Xoshiro128PlusPlus
impl Send for Xoshiro128PlusPlus
impl Sync for Xoshiro128PlusPlus
impl Unpin for Xoshiro128PlusPlus
impl UnsafeUnpin for Xoshiro128PlusPlus
impl UnwindSafe for Xoshiro128PlusPlus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> GpuRand for Twhere
T: RngCore,
impl<T> GpuRand for Twhere
T: RngCore,
Source§fn uniform_f32(&mut self) -> f32
fn uniform_f32(&mut self) -> f32
f32 in the range of [0.0, 1.0) and advances the state once.Source§fn uniform_f64(&mut self) -> f64
fn uniform_f64(&mut self) -> f64
f64 in the range of [0.0, 1.0) and advances the state once.Source§fn normal_f32(&mut self) -> f32
fn normal_f32(&mut self) -> f32
f32 with normal distribution. The value is drawn from a Gaussian of
mean=0 and sigma=1 using the Box-Mueller transform. Advances the state twice.Source§fn normal_f64(&mut self) -> f64
fn normal_f64(&mut self) -> f64
f64 with normal distribution. The value is drawn from a Gaussian of
mean=0 and sigma=1 using the Box-Mueller transform. Advances the state twice.Source§fn normal_f32_2(&mut self) -> [f32; 2]
fn normal_f32_2(&mut self) -> [f32; 2]
Self::normal_f32 but doesn’t discard the second normal value.Source§fn normal_f64_2(&mut self) -> [f64; 2]
fn normal_f64_2(&mut self) -> [f64; 2]
Self::normal_f64 but doesn’t discard the second normal value.