Struct HashedPermutation

Source
pub struct HashedPermutation {
    pub seed: u32,
    pub length: NonZeroU32,
}
Expand description

The HashedPermutation struct stores the initial seed and length of the permutation vector. In other words, if you want to shuffle the numbers from 0..n, then length = n.

Because the shuffle is performed using bit arithmetic, the fields have to be 32 bit integers. Unfortunately, larger types are not supported at this time.

Fields§

§seed: u32

The random seed that dictates which permutation you want to use. The shuffle is deterministic, so using the same seed will yield the same permutation every time.

§length: NonZeroU32

The upper bound on the range of numbers to shuffle (from 0..length). This value must be greater zero, otherwise undefined behavior may occur.

Implementations§

Source§

impl HashedPermutation

Source

pub fn new_with_seed(length: NonZeroU32, seed: u32) -> Self

Create a new instance of the hashed permutation given a length and seed

Source

pub fn shuffle(&self, input: u32) -> PermutationResult<u32>

Shuffle or permute a particular value.

This method uses the technique described in Kensler’s paper to perform an in-place shuffle with no memory overhead.

Trait Implementations§

Source§

impl Clone for HashedPermutation

Source§

fn clone(&self) -> HashedPermutation

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 HashedPermutation

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where 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.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.