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§
Source§impl 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§
Source§impl Distribution<bool> for Bernoulli
impl Distribution<bool> for Bernoulli
impl Copy for Bernoulli
Auto Trait Implementations§
impl Freeze for Bernoulli
impl RefUnwindSafe for Bernoulli
impl Send for Bernoulli
impl Sync for Bernoulli
impl Unpin for Bernoulli
impl UnwindSafe for Bernoulli
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)