Struct rand::distributions::Bernoulli
source · [−]pub struct Bernoulli { /* private fields */ }
Expand description
The Bernoulli distribution.
This is a special case of the Binomial distribution where n = 1
.
Example
use rand::distributions::{Bernoulli, Distribution};
let d = Bernoulli::new(0.3).unwrap();
let v = d.sample(&mut rand::thread_rng());
println!("{} is from a Bernoulli distribution", v);
Precision
This Bernoulli
distribution uses 64 bits from the RNG (a u64
),
so only probabilities that are multiples of 2-64 can be
represented.
Implementations
sourceimpl Bernoulli
impl Bernoulli
sourcepub fn new(p: f64) -> Result<Bernoulli, BernoulliError>
pub fn new(p: f64) -> Result<Bernoulli, BernoulliError>
Construct a new Bernoulli
with the given probability of success p
.
Precision
For p = 1.0
, the resulting distribution will always generate true.
For p = 0.0
, the resulting distribution will always generate false.
This method is accurate for any input p
in the range [0, 1]
which is
a multiple of 2-64. (Note that not all multiples of
2-64 in [0, 1]
can be represented as a f64
.)
sourcepub fn from_ratio(
numerator: u32,
denominator: u32
) -> Result<Bernoulli, BernoulliError>
pub fn from_ratio(
numerator: u32,
denominator: u32
) -> Result<Bernoulli, BernoulliError>
Construct a new Bernoulli
with the probability of success of
numerator
-in-denominator
. I.e. new_ratio(2, 3)
will return
a Bernoulli
with a 2-in-3 chance, or about 67%, of returning true
.
return true
. If numerator == 0
it will always return false
.
For numerator > denominator
and denominator == 0
, this returns an
error. Otherwise, for numerator == denominator
, samples are always
true; for numerator == 0
samples are always false.
Trait Implementations
sourceimpl Distribution<bool> for Bernoulli
impl Distribution<bool> for Bernoulli
sourcefn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> bool
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> bool
Generate a random value of T
, using rng
as the source of randomness.
sourcefn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>ⓘNotable traits for DistIter<D, R, T>impl<D, R, T> Iterator for DistIter<D, R, T> where
D: Distribution<T>,
R: Rng, type Item = T;
where
R: Rng,
Self: Sized,
fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>ⓘNotable traits for DistIter<D, R, T>impl<D, R, T> Iterator for DistIter<D, R, T> where
D: Distribution<T>,
R: Rng, type Item = T;
where
R: Rng,
Self: Sized,
D: Distribution<T>,
R: Rng, type Item = T;
Create an iterator that generates random values of T
, using rng
as
the source of randomness. Read more
impl Copy for Bernoulli
impl StructuralPartialEq for Bernoulli
Auto Trait Implementations
impl RefUnwindSafe for Bernoulli
impl Send for Bernoulli
impl Sync for Bernoulli
impl Unpin for Bernoulli
impl UnwindSafe for Bernoulli
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more