pub struct Xoshiro128Plus { /* private fields */ }Expand description
A xoshiro128+ random number generator.
The xoshiro128+ algorithm is not suitable for cryptographic purposes, but is very fast and has good statistical properties, besides a low linear complexity in the lowest bits.
The algorithm used here is translated from the xoshiro128starstar.c
reference source code by
David Blackman and Sebastiano Vigna.
Implementations§
Source§impl Xoshiro128Plus
impl Xoshiro128Plus
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::Xoroshiro128StarStar;
let rng1 = Xoroshiro128StarStar::seed_from_u64(0);
let mut rng2 = rng1.clone();
rng2.jump();
let mut rng3 = rng2.clone();
rng3.jump();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 Xoshiro128Plus
impl Clone for Xoshiro128Plus
Source§fn clone(&self) -> Xoshiro128Plus
fn clone(&self) -> Xoshiro128Plus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Xoshiro128Plus
Source§impl Debug for Xoshiro128Plus
impl Debug for Xoshiro128Plus
impl DeviceCopy for Xoshiro128Plus
impl Eq for Xoshiro128Plus
Source§impl PartialEq for Xoshiro128Plus
impl PartialEq for Xoshiro128Plus
Source§impl RngCore for Xoshiro128Plus
impl RngCore for Xoshiro128Plus
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 Xoshiro128Plus
impl SeedableRng for Xoshiro128Plus
Source§fn from_seed(seed: [u8; 16]) -> Xoshiro128Plus
fn from_seed(seed: [u8; 16]) -> Xoshiro128Plus
Create a new Xoshiro128Plus. If seed is entirely 0, it will be
mapped to a different seed.
Source§fn seed_from_u64(seed: u64) -> Xoshiro128Plus
fn seed_from_u64(seed: u64) -> Xoshiro128Plus
Seed a Xoshiro128Plus from a u64 using SplitMix64.
impl StructuralPartialEq for Xoshiro128Plus
Auto Trait Implementations§
impl Freeze for Xoshiro128Plus
impl RefUnwindSafe for Xoshiro128Plus
impl Send for Xoshiro128Plus
impl Sync for Xoshiro128Plus
impl Unpin for Xoshiro128Plus
impl UnsafeUnpin for Xoshiro128Plus
impl UnwindSafe for Xoshiro128Plus
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.