pub struct XorShift128(/* private fields */);
rand
only.Expand description
The XorShift128
pseudo-random number generator.
It has a 128-bit state and generates 64-bit numbers.
Implementations§
Source§impl XorShift128
impl XorShift128
Sourcepub const fn new(seeds: [u32; 4]) -> Option<Self> ⓘ
pub const fn new(seeds: [u32; 4]) -> Option<Self> ⓘ
Returns a seeded XorShift128
generator from the given 4 × 32-bit seeds.
Returns None
if all given seeds are 0
.
Sourcepub const fn new_unchecked(seeds: [u32; 4]) -> Self
pub const fn new_unchecked(seeds: [u32; 4]) -> Self
Returns a seeded XorShift128
generator from the given 8-bit seed,
unchecked.
The seeds must not be all 0
, otherwise every result will also be 0
.
§Panics
Panics in debug if the seeds are all 0
.
Sourcepub const fn current_u64(&self) -> u64 ⓘ
pub const fn current_u64(&self) -> u64 ⓘ
Returns the current random u64
.
Sourcepub const fn next_state(&self) -> Self
pub const fn next_state(&self) -> Self
Returns a copy of the next new random state.
Sourcepub const fn own_next_u64(self) -> Own<Self, u64>
pub const fn own_next_u64(self) -> Own<Self, u64>
Returns both the next random state and the u64
value.
Source§impl XorShift128
§Extra constructors
impl XorShift128
§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 XorShift128
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 XorShift128
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 XorShift128
generator from the given 4 × 32-bit seeds.
This is an alias of new
.
Trait Implementations§
Source§impl Clone for XorShift128
impl Clone for XorShift128
Source§fn clone(&self) -> XorShift128
fn clone(&self) -> XorShift128
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl ConstDefault for XorShift128
impl ConstDefault for XorShift128
Source§impl Debug for XorShift128
impl Debug for XorShift128
Source§impl Default for XorShift128
impl Default for XorShift128
Source§impl PartialEq for XorShift128
impl PartialEq for XorShift128
Source§impl RngCore for XorShift128
Available on crate feature dep_rand_core
only.
impl RngCore for XorShift128
dep_rand_core
only.Source§impl SeedableRng for XorShift128
Available on crate feature dep_rand_core
only.
impl SeedableRng for XorShift128
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 XorShift128
impl Eq for XorShift128
impl StructuralPartialEq for XorShift128
Auto Trait Implementations§
impl Freeze for XorShift128
impl RefUnwindSafe for XorShift128
impl Send for XorShift128
impl Sync for XorShift128
impl Unpin for XorShift128
impl UnwindSafe for XorShift128
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.