pub struct XorShift64(/* private fields */);
rand
only.Expand description
The XorShift64
pseudo-random number generator.
It has a 64-bit state and generates 64-bit numbers.
This is the classic 64-bit XorShift algorithm (13, 7, 17), by George Marsaglia.
Implementations§
Source§impl XorShift64
impl XorShift64
Sourcepub const fn new(seed: u64) -> Option<Self> ⓘ
pub const fn new(seed: u64) -> Option<Self> ⓘ
Returns a seeded XorShift64
generator from the given 64-bit seed.
Returns None
if seed == 0
.
Sourcepub const fn new_unchecked(seed: u64) -> Self
pub const fn new_unchecked(seed: u64) -> Self
Returns a seeded XorShift64
generator from the given 8-bit seed, unchecked.
The seed must not be 0
, otherwise every result will also be 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 XorShift64
§Extra constructors
impl XorShift64
§Extra constructors
Sourcepub const fn new1_u64(seed: u64) -> Option<Self> ⓘ
pub const fn new1_u64(seed: u64) -> Option<Self> ⓘ
Returns a seeded XorShift64
generator from the given 64-bit seed.
This is an alias of new
.
Sourcepub const fn new2_u32(seeds: [u32; 2]) -> Option<Self> ⓘ
Available on crate feature join
only.
pub const fn new2_u32(seeds: [u32; 2]) -> Option<Self> ⓘ
join
only.Returns a seeded XorShift64
generator from the given 2 × 32-bit seeds.
The seeds will be joined in little endian order.
Trait Implementations§
Source§impl Clone for XorShift64
impl Clone for XorShift64
Source§fn clone(&self) -> XorShift64
fn clone(&self) -> XorShift64
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl ConstDefault for XorShift64
impl ConstDefault for XorShift64
Source§impl Debug for XorShift64
impl Debug for XorShift64
Source§impl Default for XorShift64
impl Default for XorShift64
Source§impl PartialEq for XorShift64
impl PartialEq for XorShift64
Source§impl RngCore for XorShift64
Available on crate feature dep_rand_core
only.
impl RngCore for XorShift64
dep_rand_core
only.Source§impl SeedableRng for XorShift64
Available on crate feature dep_rand_core
only.
impl SeedableRng for XorShift64
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; 8]
type Seed = [u8; 8]
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 XorShift64
impl Eq for XorShift64
impl StructuralPartialEq for XorShift64
Auto Trait Implementations§
impl Freeze for XorShift64
impl RefUnwindSafe for XorShift64
impl Send for XorShift64
impl Sync for XorShift64
impl Unpin for XorShift64
impl UnwindSafe for XorShift64
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.