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
impl StructuralPartialEq 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§
§impl<T> AnyEq for T
impl<T> AnyEq for T
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request