Struct Bernoulli
pub struct Bernoulli { /* private fields */ }
The Bernoulli distribution Bernoulli(p).
This distribution describes a single boolean random variable, which is true
with probability p and false with probability 1 - p.
It is a special case of the Binomial distribution with n = 1.
Plot
The following plot shows the Bernoulli distribution with p = 0.1,
p = 0.5, and p = 0.9.
Example
use ;
let d = new.unwrap;
let v = d.sample;
println!;
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
impl Bernoulli
fn new(p: f64) -> Result<Bernoulli, BernoulliError>Construct a new
Bernoulliwith the given probability of successp.Precision
For
p = 1.0, the resulting distribution will always generate true. Forp = 0.0, the resulting distribution will always generate false.This method is accurate for any input
pin 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 af64.)fn from_ratio(numerator: u32, denominator: u32) -> Result<Bernoulli, BernoulliError>Construct a new
Bernoulliwith the probability of success ofnumerator-in-denominator. I.e.new_ratio(2, 3)will return aBernoulliwith a 2-in-3 chance, or about 67%, of returningtrue.return
true. Ifnumerator == 0it will always returnfalse. Fornumerator > denominatoranddenominator == 0, this returns an error. Otherwise, fornumerator == denominator, samples are always true; fornumerator == 0samples are always false.fn p(&self) -> f64Returns the probability (
p) of the distribution.This value may differ slightly from the input due to loss of precision.
Trait Implementations
impl Clone for Bernoulli
fn clone(&self) -> Bernoulli
impl Copy for Bernoulli
impl Debug for Bernoulli
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Distribution<bool> for Bernoulli
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> bool
impl PartialEq for Bernoulli
fn eq(&self, other: &Bernoulli) -> bool
impl Serialize for Bernoulli
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where __S: Serializer,
impl StructuralPartialEq for Bernoulli
impl<'de> Deserialize<'de> for Bernoulli
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where __D: Deserializer<'de>,
Auto Trait Implementations
impl Freeze for Bernoulli
impl RefUnwindSafe for Bernoulli
impl Send for Bernoulli
impl Sync for Bernoulli
impl Unpin for Bernoulli
impl UnsafeUnpin for Bernoulli
impl UnwindSafe for Bernoulli
Blanket Implementations
impl<T> Any for Bernoulli
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Bernoulli
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Bernoulli
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Bernoulli
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> DeserializeOwned for Bernoulli
where
T: for<'de> Deserialize<'de>,
impl<T> From<T> for Bernoulli
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Bernoulli
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Bernoulli
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Bernoulli
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Bernoulli
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>