Struct rand_unique::RandomSequenceBuilder
source · pub struct RandomSequenceBuilder<T>where
T: QuadraticResidue,{
pub seed_base: T,
pub seed_offset: T,
pub init_base: T,
pub init_offset: T,
pub prime: T,
pub intermediate_xor: T,
}
Expand description
The configuration for RandomSequence, a random unique sequence generator.
These variables define the entire sequence and should not be modified with the exception of
seed_base
and seed_offset
during initialisation.
The builder defines the internal properties of the sequence, and serialization includes all of the properties to preserve the sequence between crate versions which may change the fixed values between minor versions.
Crate versioning will bump:
- Minor version: when the hard coded parameters are updated in favour of better ones. It is safe to serialize the RandomSequenceBuilder between minor versions.
- Major version: when the sequence generation logic fundamentally changes the sequence, meaning it would be potentially unsafe to serialize the RandomSequenceBuilder between major crate version changes.
Fields§
§seed_base: T
The seed for the the start index.
seed_offset: T
The seed for the offsetting addition.
init_base: T
A value used as an xor during initialisation for start_index = f(seed_base, init_base)
to
deterministically pseudo-randomise it.
init_offset: T
A value used as an xor during initialisation for offset = f(seed_offset, init_offset)
to
deterministically pseudo-randomise it.
prime: T
Should be the largest prime number that fits in type T
and satisfied prime = 3 mod 4
.
intermediate_xor: T
A value that provides some noise from the xor to generate a pseudo-uniform distribution.
Implementations§
source§impl<T> RandomSequenceBuilder<T>where
T: QuadraticResidue,
impl<T> RandomSequenceBuilder<T>where T: QuadraticResidue,
sourcepub unsafe fn from_spec(
seed_base: T,
seed_offset: T,
init_base: T,
init_offset: T,
prime: T,
intermediate_xor: T
) -> Self
pub unsafe fn from_spec( seed_base: T, seed_offset: T, init_base: T, init_offset: T, prime: T, intermediate_xor: T ) -> Self
Initialise a config from stored settings. Not recommended unless you know what you’re doing, or these values have been taken from an already serialized RandomSequenceBuilder.
Prefer [RandomSequenceBuilderInit::new] instead.
source§impl RandomSequenceBuilder<u8>
impl RandomSequenceBuilder<u8>
sourcepub fn new(seed_base: u8, seed_offset: u8) -> Self
pub fn new(seed_base: u8, seed_offset: u8) -> Self
Initialise a RandomSequenceBuilder from a specific seed pair.
source§impl RandomSequenceBuilder<u16>
impl RandomSequenceBuilder<u16>
sourcepub fn new(seed_base: u16, seed_offset: u16) -> Self
pub fn new(seed_base: u16, seed_offset: u16) -> Self
Initialise a RandomSequenceBuilder from a specific seed pair.
source§impl RandomSequenceBuilder<u32>
impl RandomSequenceBuilder<u32>
sourcepub fn new(seed_base: u32, seed_offset: u32) -> Self
pub fn new(seed_base: u32, seed_offset: u32) -> Self
Initialise a RandomSequenceBuilder from a specific seed pair.
source§impl RandomSequenceBuilder<u64>
impl RandomSequenceBuilder<u64>
sourcepub fn new(seed_base: u64, seed_offset: u64) -> Self
pub fn new(seed_base: u64, seed_offset: u64) -> Self
Initialise a RandomSequenceBuilder from a specific seed pair.
source§impl RandomSequenceBuilder<usize>
impl RandomSequenceBuilder<usize>
sourcepub fn new(seed_base: usize, seed_offset: usize) -> Self
pub fn new(seed_base: usize, seed_offset: usize) -> Self
Initialise a RandomSequenceBuilder from a specific seed pair.
Trait Implementations§
source§impl<T> Clone for RandomSequenceBuilder<T>where
T: QuadraticResidue + Clone,
impl<T> Clone for RandomSequenceBuilder<T>where T: QuadraticResidue + Clone,
source§fn clone(&self) -> RandomSequenceBuilder<T>
fn clone(&self) -> RandomSequenceBuilder<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T> Debug for RandomSequenceBuilder<T>where
T: QuadraticResidue + Debug,
impl<T> Debug for RandomSequenceBuilder<T>where T: QuadraticResidue + Debug,
source§impl<'de, T> Deserialize<'de> for RandomSequenceBuilder<T>where
T: QuadraticResidue + Deserialize<'de>,
impl<'de, T> Deserialize<'de> for RandomSequenceBuilder<T>where T: QuadraticResidue + Deserialize<'de>,
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>,
source§impl<T> From<RandomSequenceBuilder<T>> for RandomSequence<T>where
T: QuadraticResidue,
RandomSequence<T>: Iterator<Item = T>,
impl<T> From<RandomSequenceBuilder<T>> for RandomSequence<T>where T: QuadraticResidue, RandomSequence<T>: Iterator<Item = T>,
source§fn from(value: RandomSequenceBuilder<T>) -> Self
fn from(value: RandomSequenceBuilder<T>) -> Self
source§impl<T> IntoIterator for RandomSequenceBuilder<T>where
T: QuadraticResidue,
RandomSequence<T>: Iterator<Item = T>,
impl<T> IntoIterator for RandomSequenceBuilder<T>where T: QuadraticResidue, RandomSequence<T>: Iterator<Item = T>,
source§fn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Build a RandomSequence iterator from this config.
§type IntoIter = RandomSequence<T>
type IntoIter = RandomSequence<T>
source§impl<T> PartialEq for RandomSequenceBuilder<T>where
T: QuadraticResidue + PartialEq,
impl<T> PartialEq for RandomSequenceBuilder<T>where T: QuadraticResidue + PartialEq,
source§fn eq(&self, other: &RandomSequenceBuilder<T>) -> bool
fn eq(&self, other: &RandomSequenceBuilder<T>) -> bool
self
and other
values to be equal, and is used
by ==
.