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>
impl<R: RngCore> CoinFlipper<R>
pub fn new(rng: R) -> Self
Sourcepub fn random_ratio_one_over(&mut self, d: usize) -> bool
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
Sourcefn random_ratio(&mut self, n: usize, d: usize) -> bool
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
Sourcefn flip_c_heads(&mut self, c: u32) -> bool
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> 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