Trait rv::traits::Rv [−][src]
pub trait Rv<X> { fn ln_f(&self, x: &X) -> f64; fn draw<R: Rng>(&self, rng: &mut R) -> X; fn f(&self, x: &X) -> f64 { ... } fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X> { ... } }
Random variable
Contains the minimal functionality that a random object must have to be useful: a function defining the un-normalized density/mass at a point, and functions to draw samples from the distribution.
Required Methods
fn ln_f(&self, x: &X) -> f64
Probability function
Example
use rv::dist::Gaussian; use rv::traits::Rv; let g = Gaussian::standard(); assert!(g.ln_f(&0.0_f64) > g.ln_f(&0.1_f64)); assert!(g.ln_f(&0.0_f64) > g.ln_f(&-0.1_f64));
fn draw<R: Rng>(&self, rng: &mut R) -> X
Single draw from the Rv
Example
Flip a coin
extern crate rand; use rv::dist::Bernoulli; use rv::traits::Rv; let b = Bernoulli::uniform(); let mut rng = rand::thread_rng(); let x: bool = b.draw(&mut rng); // could be true, could be false.
Provided Methods
fn f(&self, x: &X) -> f64
Probability function
Example
use rv::dist::Gaussian; use rv::traits::Rv; let g = Gaussian::standard(); assert!(g.f(&0.0_f64) > g.f(&0.1_f64)); assert!(g.f(&0.0_f64) > g.f(&-0.1_f64));
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X>
Multiple draws of the Rv
Example
Flip a lot of coins
extern crate rand; use rv::dist::Bernoulli; use rv::traits::Rv; let b = Bernoulli::uniform(); let mut rng = rand::thread_rng(); let xs: Vec<bool> = b.sample(22, &mut rng); assert_eq!(xs.len(), 22);
Implementors
impl Rv<bool> for Bernoulli
impl Rv<u8> for Bernoulli
impl Rv<u16> for Bernoulli
impl Rv<u32> for Bernoulli
impl Rv<u64> for Bernoulli
impl Rv<usize> for Bernoulli
impl Rv<i8> for Bernoulli
impl Rv<i16> for Bernoulli
impl Rv<i32> for Bernoulli
impl Rv<i64> for Bernoulli
impl Rv<isize> for Bernoulli
impl Rv<f32> for Beta
impl Rv<f64> for Beta
impl Rv<u8> for BetaBinomial
impl Rv<u16> for BetaBinomial
impl Rv<u32> for BetaBinomial
impl Rv<u64> for BetaBinomial
impl Rv<usize> for BetaBinomial
impl Rv<i8> for BetaBinomial
impl Rv<i16> for BetaBinomial
impl Rv<i32> for BetaBinomial
impl Rv<i64> for BetaBinomial
impl Rv<u8> for Binomial
impl Rv<u16> for Binomial
impl Rv<u32> for Binomial
impl Rv<u64> for Binomial
impl Rv<usize> for Binomial
impl Rv<i8> for Binomial
impl Rv<i16> for Binomial
impl Rv<i32> for Binomial
impl Rv<i64> for Binomial
impl<X: CategoricalDatum> Rv<X> for Categorical
impl Rv<f64> for Cauchy
impl Rv<f32> for Cauchy
impl Rv<f64> for ChiSquared
impl Rv<f32> for ChiSquared
impl Rv<Partition> for Crp
impl Rv<Vec<f64>> for SymmetricDirichlet
impl Rv<Vec<f64>> for Dirichlet
impl Rv<f64> for Exponential
impl Rv<f32> for Exponential
impl Rv<f32> for Gamma
impl Rv<f64> for Gamma
impl Rv<f32> for Gaussian
impl Rv<f64> for Gaussian
impl Rv<u16> for Geometric
impl Rv<u32> for Geometric
impl Rv<f32> for Gev
impl Rv<f64> for Gev
impl Rv<f32> for InvGamma
impl Rv<f64> for InvGamma
impl Rv<f64> for Laplace
impl Rv<f32> for Laplace
impl Rv<f32> for LogNormal
impl Rv<f64> for LogNormal
impl<X, Fx> Rv<X> for Mixture<Fx> where
Fx: Rv<X>,impl Rv<DVector<f64>> for MvGaussian
impl Rv<MvGaussian> for NormalInvWishart
impl Rv<Gaussian> for NormalGamma
impl Rv<f32> for Pareto
impl Rv<f64> for Pareto
impl Rv<u16> for Poisson
impl Rv<u32> for Poisson
impl Rv<f64> for StudentsT
impl Rv<f32> for StudentsT
impl Rv<f64> for Uniform
impl Rv<f32> for Uniform
impl Rv<f32> for VonMises
impl Rv<f64> for VonMises
impl Rv<DMatrix<f64>> for InvWishart
impl<X, Fx, Pr> Rv<X> for ConjugateModel<X, Fx, Pr> where
X: Debug,
Fx: Rv<X> + HasSuffStat<X>,
Pr: ConjugatePrior<X, Fx>,impl Rv<Bernoulli> for Beta
impl Rv<Categorical> for SymmetricDirichlet
impl Rv<Categorical> for Dirichlet