Struct CoinFlipper

Source
pub(crate) struct CoinFlipper<R: RngCore> {
    pub rng: R,
    chunk: u32,
    chunk_remaining: u32,
}

Fields§

§rng: R§chunk: u32§chunk_remaining: u32

Implementations§

Source§

impl<R: RngCore> CoinFlipper<R>

Source

pub fn new(rng: R) -> Self

Source

pub fn random_ratio_one_over(&mut self, d: usize) -> bool

Returns true with a probability of 1 / d Uses an expected two bits of randomness Panics if d == 0

Source

fn random_ratio(&mut self, n: usize, d: usize) -> bool

Returns true with a probability of n / d Uses an expected two bits of randomness

Source

fn flip_c_heads(&mut self, c: u32) -> bool

If the next c bits of randomness all represent heads, consume them, return true Otherwise return false and consume the number of heads plus one. Generates new bits of randomness when necessary (in 32 bit chunks) Has a 1 in 2 to the c chance of returning true c must be less than or equal to 32

Auto Trait Implementations§

§

impl<R> Freeze for CoinFlipper<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for CoinFlipper<R>
where R: RefUnwindSafe,

§

impl<R> Send for CoinFlipper<R>
where R: Send,

§

impl<R> Sync for CoinFlipper<R>
where R: Sync,

§

impl<R> Unpin for CoinFlipper<R>
where R: Unpin,

§

impl<R> UnwindSafe for CoinFlipper<R>
where R: UnwindSafe,

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V