pub struct Sfc32 { /* private fields */ }Expand description
A sfc32 random number generator.
The sfc32 algorithm is not suitable for cryptographic uses but is very fast. This algorithm has a 128-bit state and outputs 32-bit random numbers. The average period of this algorithm is approximately 2127, and the minimum period is greater than or equal to 232.
The algorithm used here is translated from the reference implementation provided by PractRand version pre0.95, which is licensed under the public domain.
§Examples
let mut rng = Sfc32::from_seed([0; 12]);
assert_eq!(rng.next_u32(), 0xfb52_c520);Implementations§
Source§impl Sfc32
impl Sfc32
Sourcepub fn new_u64(seed: u64, rounds: Option<u32>) -> Self
pub fn new_u64(seed: u64, rounds: Option<u32>) -> Self
Creates a new Sfc32 using a u64 seed.
If rounds is None, the state is mixed up 12 rounds during
initialization.
Note that the result of this method is different from the result of
Sfc32::seed_from_u64.
§Examples
let mut rng = Sfc32::new_u64(0, None);
assert_eq!(rng.next_u32(), 0x5146_76c3);Trait Implementations§
Source§impl<'de> Deserialize<'de> for Sfc32
impl<'de> Deserialize<'de> for Sfc32
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl SeedableRng for Sfc32
impl SeedableRng for Sfc32
Source§type Seed = [u8; 12]
type Seed = [u8; 12]
Seed type, which is restricted to types mutably-dereferenceable as
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
Create a new PRNG using a
u64 seed. Read moreSource§fn from_rng(rng: &mut impl RngCore) -> Self
fn from_rng(rng: &mut impl RngCore) -> Self
Create a new PRNG seeded from an infallible
Rng. Read moreSource§fn try_from_rng<R>(rng: &mut R) -> Result<Self, <R as TryRngCore>::Error>where
R: TryRngCore,
fn try_from_rng<R>(rng: &mut R) -> Result<Self, <R as TryRngCore>::Error>where
R: TryRngCore,
Create a new PRNG seeded from a potentially fallible
Rng. Read moreimpl Eq for Sfc32
impl StructuralPartialEq for Sfc32
Auto Trait Implementations§
impl Freeze for Sfc32
impl RefUnwindSafe for Sfc32
impl Send for Sfc32
impl Sync for Sfc32
impl Unpin for Sfc32
impl UnwindSafe for Sfc32
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<R> TryRngCore for R
impl<R> TryRngCore for R
Source§type Error = Infallible
type Error = Infallible
The type returned in the event of a RNG error.
Source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
Return the next random
u32.Source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
Return the next random
u64.Source§fn try_fill_bytes(
&mut self,
dst: &mut [u8],
) -> Result<(), <R as TryRngCore>::Error>
fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>
Fill
dest entirely with random data.Source§fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
Wrap RNG with the
UnwrapMut wrapper.