pub struct Sfc64 { /* private fields */ }Expand description
A sfc64 random number generator.
The sfc64 algorithm is not suitable for cryptographic uses but is very fast. This algorithm has a 256-bit state and outputs 64-bit random numbers. The average period of this algorithm is approximately 2255, and the minimum period is greater than or equal to 264.
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 = Sfc64::from_seed([0; 24]);
assert_eq!(rng.next_u64(), 0xdb90_9c81_8901_599d);Implementations§
Source§impl Sfc64
impl Sfc64
Sourcepub fn new_u64(seed: u64, rounds: Option<u64>) -> Self
pub fn new_u64(seed: u64, rounds: Option<u64>) -> Self
Creates a new Sfc64 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
Sfc64::seed_from_u64.
§Examples
let mut rng = Sfc64::new_u64(0, None);
assert_eq!(rng.next_u64(), 0x3acf_a029_e3cc_6041);Trait Implementations§
Source§impl<'de> Deserialize<'de> for Sfc64
impl<'de> Deserialize<'de> for Sfc64
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 Sfc64
impl SeedableRng for Sfc64
Source§type Seed = [u8; 24]
type Seed = [u8; 24]
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 Sfc64
impl StructuralPartialEq for Sfc64
Auto Trait Implementations§
impl Freeze for Sfc64
impl RefUnwindSafe for Sfc64
impl Send for Sfc64
impl Sync for Sfc64
impl Unpin for Sfc64
impl UnwindSafe for Sfc64
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.