Struct libera::all::Xyza8b

source ·
pub struct Xyza8b { /* private fields */ }
Available on crate feature alazar only.
Expand description

alazar A simple 8-bit pseudo-random number generator with 32-bit of state, based on the XorShift algorithm.

It has an almost optimal cycle so no real care is required for seeding except avoiding all zeros, but it fails many of the die hard random number tests.

Its longest cycle is 4,294,967,294.

Implementations§

source§

impl Xyza8b

source

pub const fn new(seeds: [u8; 4]) -> Xyza8b

Returns a seeded Xyza8b generator from the given 4 × 8-bit seeds. This is the fastest constructor.

source

pub const fn current_u8(&self) -> u8

Returns the current random u8.

source

pub fn next_u8(&mut self) -> u8

Returns the next random u8.

source

pub const fn next_new(&self) -> Xyza8b

Returns a copy of the next new random state.

source§

impl Xyza8b

source

pub const fn new1_u32(seed: u32) -> Xyza8b

Returns a seeded Xyza8a generator from the given 32-bit seed.

The seeds will be split in little endian order.

source

pub const fn new2_u16(seeds: [u16; 2]) -> Xyza8b

Returns a seeded Xyza8a generator from the given 2 × 16-bit seeds.

The seeds will be split in little endian order.

source

pub const fn new4_u8(seeds: [u8; 4]) -> Xyza8b

Returns a seeded Xyza8b generator from the given 4 × 8-bit seeds. This is an alias of new.

Trait Implementations§

source§

impl Clone for Xyza8b

source§

fn clone(&self) -> Xyza8b

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Xyza8b

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for Xyza8b

source§

fn default() -> Xyza8b

Returns the “default value” for a type. Read more
source§

impl PartialEq<Xyza8b> for Xyza8b

source§

fn eq(&self, other: &Xyza8b) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl RngCore for Xyza8b

source§

fn next_u32(&mut self) -> u32

Returns the next 4 × random u8 combined as a single u32.

source§

fn next_u64(&mut self) -> u64

Returns the next 8 × random u8 combined as a single u64.

source§

fn fill_bytes(&mut self, dest: &mut [u8])

Fill dest with random data. Read more
source§

fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>

Fill dest entirely with random data. Read more
source§

impl SeedableRng for Xyza8b

§

type Seed = [u8; 4]

Seed type, which is restricted to types mutably-dereferenceable as u8 arrays (we recommend [u8; N] for some N). Read more
source§

fn from_seed(seeds: <Xyza8b as SeedableRng>::Seed) -> Xyza8b

Create a new PRNG using the given seed. Read more
source§

fn seed_from_u64(state: u64) -> Self

Create a new PRNG using a u64 seed. Read more
source§

fn from_rng<R>(rng: R) -> Result<Self, Error>where R: RngCore,

Create a new PRNG seeded from another Rng. Read more
source§

fn from_entropy() -> Self

Creates a new instance of the RNG seeded via getrandom. Read more
source§

impl Copy for Xyza8b

source§

impl Eq for Xyza8b

source§

impl StructuralEq for Xyza8b

source§

impl StructuralPartialEq for Xyza8b

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Also for T

source§

fn also_mut<F>(self, f: F) -> Selfwhere F: FnOnce(&mut Self),

Applies a function which takes the parameter by exclusive reference, and then returns the (possibly) modified owned value. Read more
source§

fn also_ref<F>(self, f: F) -> Selfwhere F: FnOnce(&Self),

Applies a function which takes the parameter by shared reference, and then returns the (possibly) modified owned value. Read more
source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T, Res> Apply<Res> for Twhere T: ?Sized,

source§

fn apply<F>(self, f: F) -> Reswhere F: FnOnce(Self) -> Res, Self: Sized,

Apply a function which takes the parameter by value.
source§

fn apply_ref<F>(&self, f: F) -> Reswhere F: FnOnce(&Self) -> Res,

Apply a function which takes the parameter by shared reference.
source§

fn apply_mut<F>(&mut self, f: F) -> Reswhere F: FnOnce(&mut Self) -> Res,

Apply a function which takes the parameter by exclusive reference.
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> DataSize for T

source§

const BYTES: usize = size_of::<Self>()

The size of this type in bytes, rounded up if it’s not a multiple of 8.
source§

const UBITS: usize = Self::UBYTES * 8

The pointer size in bits for the current platform.
source§

const UBYTES: usize = 8usize

The pointer size in bytes for the current platform.
source§

fn pointer_ratio(&self) -> (usize, usize)

Returns the size ratio between UBYTES and BYTES. Read more
source§

fn stack_byte_size(&self) -> usize

Returns the size in bytes of this type, in the stack. Read more
§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<F, T> IntoSample<T> for Fwhere T: FromSample<F>,

§

fn into_sample(self) -> T

source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for Twhere U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> BitSizeAtLeast<0> for T

§

impl<S, T> Duplex<S> for Twhere T: FromSample<S> + ToSample<S>,