pub struct GeneralLinearCongruentialGenerator128<const A: u128, const C: u128> { /* private fields */ }
Expand description
The general linear congruential generator. Internally it holds
u128
state and follows the next_state = A*old_state + C
formula
(over 128-bit modulo arithmetic).
Additionally all LCGs implement Splittable
through an ad-hoc method.
However users should be warned that statistical properties of this method
are barely verified.
Implementations§
Trait Implementations§
Source§impl<const A: u128, const C: u128> Clone for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Clone for GeneralLinearCongruentialGenerator128<A, C>
Source§fn clone(&self) -> GeneralLinearCongruentialGenerator128<A, C>
fn clone(&self) -> GeneralLinearCongruentialGenerator128<A, C>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for f32
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for f32
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for f64
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for f64
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i32
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i32
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i64
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i64
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u32
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u32
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u64
impl<const A: u128, const C: u128> PRNConcreteBoundedGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u64
Source§fn generate<TBounds: RangeBounds<Self>>(
generator: &mut GeneralLinearCongruentialGenerator128<A, C>,
range: TBounds,
) -> Self
fn generate<TBounds: RangeBounds<Self>>( generator: &mut GeneralLinearCongruentialGenerator128<A, C>, range: TBounds, ) -> Self
Generates a new pseudo random instance of itself in given range.
Source§impl<const N: usize, const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for [u8; N]
impl<const N: usize, const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for [u8; N]
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for bool
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for bool
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i128
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i128
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i32
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i32
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i64
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i64
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i8
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for i8
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u128
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u128
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u32
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u32
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u64
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u64
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u8
impl<const A: u128, const C: u128> PRNConcreteGenerator<GeneralLinearCongruentialGenerator128<A, C>> for u8
Source§fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
fn generate(generator: &mut GeneralLinearCongruentialGenerator128<A, C>) -> Self
Generates a new pseudo random instance of itself.
Source§impl<const A: u128, const C: u128> PRNGSerialize for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> PRNGSerialize for GeneralLinearCongruentialGenerator128<A, C>
Source§const MAX_SERIALIZED_SIZE: usize = 20usize
const MAX_SERIALIZED_SIZE: usize = 20usize
The maximum size of serialized value, in bytes. This should be used by callers
to determine how big the buffer needs to be for
PRNGSerialize::serialize
to succeed. Read moreSource§type SerializeError = SerializeError
type SerializeError = SerializeError
Concrete serialization error.
Source§type DeserializeError = DeserializeError
type DeserializeError = DeserializeError
Concrete deserialization error.
Source§fn serialize(&self, buffer: &mut [u8]) -> Result<usize, Self::SerializeError>
fn serialize(&self, buffer: &mut [u8]) -> Result<usize, Self::SerializeError>
Serializes self into the buffer. Returns the actual amount of bytes that
were written on success. Read more
Source§fn deserialize(
buffer: &[u8],
) -> Result<DeserializationResult<Self>, Self::DeserializeError>
fn deserialize( buffer: &[u8], ) -> Result<DeserializationResult<Self>, Self::DeserializeError>
Deserializes self from the passed buffer. Returns deserialization info
on success, i.e. the actual value and the amount of bytes read from the
buffer. Read more
Source§impl<const A: u128, const C: u128> PRNGenerator for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> PRNGenerator for GeneralLinearCongruentialGenerator128<A, C>
Source§unsafe fn fill_raw(&mut self, dst_ptr: *mut u8, dst_len: usize)
unsafe fn fill_raw(&mut self, dst_ptr: *mut u8, dst_len: usize)
Fills the given raw buffer with randomness. Read more
Source§fn generate<T>(&mut self) -> Twhere
T: PRNConcreteGenerator<Self>,
fn generate<T>(&mut self) -> Twhere
T: PRNConcreteGenerator<Self>,
Generates pseudo random instance of given type if supported.
This function should support at least i32, u32, i64 and u64
types.
Source§fn generate_in_range<T, TBounds: RangeBounds<T>>(&mut self, range: TBounds) -> Twhere
T: PRNConcreteBoundedGenerator<Self>,
fn generate_in_range<T, TBounds: RangeBounds<T>>(&mut self, range: TBounds) -> Twhere
T: PRNConcreteBoundedGenerator<Self>,
Generates a pseudo random number in given range, if supported.
Source§impl<const A: u128, const C: u128> PartialEq for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> PartialEq for GeneralLinearCongruentialGenerator128<A, C>
Source§fn eq(&self, other: &GeneralLinearCongruentialGenerator128<A, C>) -> bool
fn eq(&self, other: &GeneralLinearCongruentialGenerator128<A, C>) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.Source§impl<const A: u128, const C: u128> Seedable<u128> for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Seedable<u128> for GeneralLinearCongruentialGenerator128<A, C>
Source§impl<const A: u128, const C: u128> Seedable<u64> for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Seedable<u64> for GeneralLinearCongruentialGenerator128<A, C>
Source§impl<const A: u128, const C: u128> Splittable for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Splittable for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Copy for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Eq for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> StructuralPartialEq for GeneralLinearCongruentialGenerator128<A, C>
Auto Trait Implementations§
impl<const A: u128, const C: u128> Freeze for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> RefUnwindSafe for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Send for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Sync for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> Unpin for GeneralLinearCongruentialGenerator128<A, C>
impl<const A: u128, const C: u128> UnwindSafe for GeneralLinearCongruentialGenerator128<A, C>
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
Mutably borrows from an owned value. Read more