Struct Bernoulli
struct Bernoulli { ... }
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: &Self) -> f64Returns the probability (
p) of the distribution.This value may differ slightly from the input due to loss of precision.
impl Clone for Bernoulli
fn clone(self: &Self) -> Bernoulli
impl Copy for Bernoulli
impl Debug for Bernoulli
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Distribution for Bernoulli
fn sample<R: Rng + ?Sized>(self: &Self, rng: &mut R) -> bool
impl Freeze for Bernoulli
impl PartialEq for Bernoulli
fn eq(self: &Self, other: &Bernoulli) -> bool
impl RefUnwindSafe for Bernoulli
impl Send for Bernoulli
impl Serialize for Bernoulli
fn serialize<__S>(self: &Self, __serializer: __S) -> Result<<__S as >::Ok, <__S as >::Error> where __S: Serializer
impl StructuralPartialEq for Bernoulli
impl Sync for Bernoulli
impl Unpin for Bernoulli
impl UnsafeUnpin for Bernoulli
impl UnwindSafe for Bernoulli
impl<'de> Deserialize for Bernoulli
fn deserialize<__D>(__deserializer: __D) -> Result<Self, <__D as >::Error> where __D: Deserializer<'de>
impl<T> Any for Bernoulli
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Bernoulli
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Bernoulli
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for Bernoulli
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> DeserializeOwned for Bernoulli
impl<T> From for Bernoulli
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Bernoulli
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for Bernoulli
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for Bernoulli
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Bernoulli
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>
impl<V, T> VZip for Bernoulli
fn vzip(self: Self) -> V