pub struct Xoroshiro128pp(/* private fields */);
rand
only.Expand description
The Xoroshiro128++
pseudo-random number generator.
It has a 128-bit state and generates 32-bit numbers.
Implementations§
Source§impl Xoroshiro128pp
§Constructors
impl Xoroshiro128pp
§Constructors
Sourcepub const fn new(seed: [u32; 4]) -> Option<Self> ⓘ
pub const fn new(seed: [u32; 4]) -> Option<Self> ⓘ
Creates a new Xoroshiro128++ PRNG with the given seed
.
Returns None
if the seed parts are all zero.
Sourcepub const fn new_unchecked(seed: [u32; 4]) -> Self
pub const fn new_unchecked(seed: [u32; 4]) -> Self
Creates a new Xoroshiro128++ PRNG with the given seed without any checks.
§Panics
Panics in debug mode if the seed parts are all 0
.
Sourcepub fn from_stack() -> Self
pub fn from_stack() -> Self
Creates a new Xoroshiro128++ PRNG, seeded from addresses of stack variables.
This is a very poor source of randomness.
Sourcepub fn from_heap() -> Self
pub fn from_heap() -> Self
Creates a new Xoroshiro128++ PRNG, seeded from addresses of heap and stack variables.
This is a very poor source of randomness.
Sourcepub fn from_randomstate() -> Self
pub fn from_randomstate() -> Self
Creates a new Xoroshiro128++ PRNG, seeded from RandomState
.
Source§impl Xoroshiro128pp
§Methods taking &mut self
impl Xoroshiro128pp
§Methods taking &mut self
Sourcepub fn long_jump(&mut self)
pub fn long_jump(&mut self)
The long jump function for the generator, equivalent to 2^96 next_u32
calls.
Sourcepub fn next2_u16(&mut self) -> [u16; 2]
Available on crate feature split
only.
pub fn next2_u16(&mut self) -> [u16; 2]
split
only.Generates the next random value split into 2 u16 values.
Source§impl Xoroshiro128pp
§Methods taking self
impl Xoroshiro128pp
§Methods taking self
Sourcepub const fn current_u32(self) -> u32 ⓘ
pub const fn current_u32(self) -> u32 ⓘ
Returns the current random u32
, without updating the state.
Sourcepub const fn copy_next_state(self) -> Self
pub const fn copy_next_state(self) -> Self
Returns a copy of the next new random state.
Sourcepub const fn own_next_u32(self) -> Own<Self, u32>
pub const fn own_next_u32(self) -> Own<Self, u32>
Returns both the next random state and the u32
value in a tuple.
Sourcepub const fn copy_long_jump(self) -> Self
pub const fn copy_long_jump(self) -> Self
Returns a copy of the state long-jumped ahead by 2^96 steps.
Source§impl Xoroshiro128pp
§Extra constructors
impl Xoroshiro128pp
§Extra constructors
Sourcepub const fn new1_u128(seed: u128) -> Option<Self> ⓘ
Available on crate feature split
only.
pub const fn new1_u128(seed: u128) -> Option<Self> ⓘ
split
only.Returns a seeded Xoroshiro128pp
generator from the given 128-bit seed.
The seeds will be split in little endian order.
Sourcepub const fn new2_u64(seeds: [u64; 2]) -> Option<Self> ⓘ
Available on crate feature split
only.
pub const fn new2_u64(seeds: [u64; 2]) -> Option<Self> ⓘ
split
only.Returns a seeded Xoroshiro128pp
generator from the given 2 × 64-bit seeds.
The seeds will be split in little endian order.
Sourcepub const fn new4_u32(seeds: [u32; 4]) -> Option<Self> ⓘ
pub const fn new4_u32(seeds: [u32; 4]) -> Option<Self> ⓘ
Returns a seeded Xoroshiro128pp
generator from the given 4 × 32-bit seeds.
This is an alias of new
.
Trait Implementations§
Source§impl Clone for Xoroshiro128pp
impl Clone for Xoroshiro128pp
Source§fn clone(&self) -> Xoroshiro128pp
fn clone(&self) -> Xoroshiro128pp
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl ConstDefault for Xoroshiro128pp
impl ConstDefault for Xoroshiro128pp
Source§impl Debug for Xoroshiro128pp
impl Debug for Xoroshiro128pp
Source§impl Default for Xoroshiro128pp
impl Default for Xoroshiro128pp
Source§impl PartialEq for Xoroshiro128pp
impl PartialEq for Xoroshiro128pp
Source§impl RngCore for Xoroshiro128pp
Available on crate feature dep_rand_core
only.
impl RngCore for Xoroshiro128pp
dep_rand_core
only.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 Xoroshiro128pp
Available on crate feature dep_rand_core
only.
impl SeedableRng for Xoroshiro128pp
dep_rand_core
only.Source§fn from_seed(seed: Self::Seed) -> Self
fn from_seed(seed: Self::Seed) -> Self
When seeded with zero this implementation uses the default seed value as the cold path.
Source§type Seed = [u8; 16]
type Seed = [u8; 16]
u8
arrays (we recommend [u8; N]
for some N
). Read moreSource§fn seed_from_u64(state: u64) -> Self
fn seed_from_u64(state: u64) -> Self
u64
seed. Read moreSource§fn from_rng<R>(rng: R) -> Result<Self, Error> ⓘwhere
R: RngCore,
fn from_rng<R>(rng: R) -> Result<Self, Error> ⓘwhere
R: RngCore,
Rng
. Read moreSource§fn from_entropy() -> Self
fn from_entropy() -> Self
impl Copy for Xoroshiro128pp
impl Eq for Xoroshiro128pp
impl StructuralPartialEq for Xoroshiro128pp
Auto Trait Implementations§
impl Freeze for Xoroshiro128pp
impl RefUnwindSafe for Xoroshiro128pp
impl Send for Xoroshiro128pp
impl Sync for Xoroshiro128pp
impl Unpin for Xoroshiro128pp
impl UnwindSafe for Xoroshiro128pp
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.