Struct xorshift::xorshift128::Xorshift128
[−]
[src]
pub struct Xorshift128(_);
A random number generator that uses the xorshift128+ algorithm [1].
Description
Quoted from [1].
This generator has been replaced by xoroshiro128plus, which is significantly faster and has better statistical properties.
It might be nonetheless useful for languages in which low-level rotate instructions are not available. Due to the relatively short period it is acceptable only for applications with a mild amount of parallelism; otherwise, use a xorshift1024* generator.
Note that the lowest bit of this generator is an LSFR, and thus it is slightly less random than the other bits. We suggest to use a sign test to extract a random Boolean value.
The state must be seeded so that it is not everywhere zero. If you have a 64-bit seed, we suggest to seed a splitmix64 generator and use its output to fill s.
[1]: Sebastiano Vigna, xorshift128+
Parallelism
The RngJump
implementation is equivalent to 264 calls to next_u64
().
Used to generate 264 non-overlapping subsequences for parallel
computations.
Trait Implementations
impl Copy for Xorshift128
[src]
impl Clone for Xorshift128
[src]
fn clone(&self) -> Xorshift128
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl Rng for Xorshift128
[src]
fn next_u32(&mut self) -> u32
Return the next random u32. Read more
fn next_u64(&mut self) -> u64
Return the next random u64. Read more
fn next_f32(&mut self) -> f32
Return the next random f32 selected from the half-open interval [0, 1)
. Read more
fn next_f64(&mut self) -> f64
Return the next random f64 selected from the half-open interval [0, 1)
. Read more
fn fill_bytes(&mut self, dest: &mut [u8])
Fill dest
with random data. Read more
fn gen<T>(&mut self) -> T where
T: Rand,
T: Rand,
Return a random value of a Rand
type. Read more
fn gen_iter<T>(&'a mut self) -> Generator<'a, T, Self> where
T: Rand,
T: Rand,
Return an iterator that will yield an infinite number of randomly generated items. Read more
fn gen_range<T>(&mut self, low: T, high: T) -> T where
T: SampleRange + PartialOrd<T>,
T: SampleRange + PartialOrd<T>,
Generate a random value in the range [low
, high
). Read more
fn gen_weighted_bool(&mut self, n: u32) -> bool
Return a bool with a 1 in n chance of true Read more
fn gen_ascii_chars(&'a mut self) -> AsciiGenerator<'a, Self>
Return an iterator of random characters from the set A-Z,a-z,0-9. Read more
fn choose<T>(&mut self, values: &'a [T]) -> Option<&'a T>
Return a random element from values
. Read more
fn choose_mut<T>(&mut self, values: &'a mut [T]) -> Option<&'a mut T>
Return a mutable pointer to a random element from values
. Read more
fn shuffle<T>(&mut self, values: &mut [T])
Shuffle a mutable slice in place. Read more
impl<'a> SeedableRng<&'a [u64]> for Xorshift128
[src]
fn reseed(&mut self, seed: &'a [u64])
Reseed an RNG with the given seed. Read more
fn from_seed(seed: &'a [u64]) -> Xorshift128
Create a new RNG with the given seed. Read more
impl Rand for Xorshift128
[src]
fn rand<R: Rng>(other: &mut R) -> Xorshift128
Generates a random instance of this type using the specified source of randomness. Read more