[−][src]Trait rv::traits::Rv
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
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
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);
Estimate Gaussian mean
use rv::dist::Gaussian; use rv::traits::Rv; let gauss = Gaussian::standard(); let mut rng = rand::thread_rng(); let xs: Vec<f64> = gauss.sample(100_000, &mut rng); assert::close(xs.iter().sum::<f64>()/100_000.0, 0.0, 1e-2);
fn sample_stream<'r, R: Rng>(
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
&'r self,
rng: &'r mut R
) -> Box<dyn Iterator<Item = X> + 'r>
Create a never-ending iterator of samples
Example
Estimate the mean of a Gamma distribution
use rv::traits::Rv; use rv::dist::Gamma; let mut rng = rand::thread_rng(); let gamma = Gamma::new(2.0, 1.0).unwrap(); let n = 100_000_usize; let mean = <Gamma as Rv<f64>>::sample_stream(&gamma, &mut rng) .take(n) .sum::<f64>() / n as f64;; assert::close(mean, 2.0, 1e-2);
Implementors
impl Rv<bool> for Bernoulli
[src]
fn f(&self, x: &bool) -> f64
[src]
fn ln_f(&self, x: &bool) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> bool
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<bool>
[src]
impl Rv<f32> for Beta
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Cauchy
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for ChiSquared
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Exponential
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Gamma
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Gaussian
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Gev
[src]
impl Rv<f32> for InvGamma
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for KsTwoAsymptotic
[src]
impl Rv<f32> for Kumaraswamy
[src]
impl Rv<f32> for Laplace
[src]
impl Rv<f32> for LogNormal
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Pareto
[src]
impl Rv<f32> for StudentsT
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for Uniform
[src]
fn ln_f(&self, x: &f32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f32>
[src]
impl Rv<f32> for VonMises
[src]
impl Rv<f64> for Beta
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Cauchy
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for ChiSquared
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Exponential
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Gamma
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Gaussian
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Gev
[src]
impl Rv<f64> for InvGamma
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for KsTwoAsymptotic
[src]
impl Rv<f64> for Kumaraswamy
[src]
impl Rv<f64> for Laplace
[src]
impl Rv<f64> for LogNormal
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Pareto
[src]
impl Rv<f64> for StudentsT
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for Uniform
[src]
fn ln_f(&self, x: &f64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> f64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<f64>
[src]
impl Rv<f64> for VonMises
[src]
impl Rv<i16> for BetaBinomial
[src]
fn ln_f(&self, k: &i16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i16>
[src]
impl Rv<i16> for Binomial
[src]
impl Rv<i16> for Skellam
[src]
fn ln_f(&self, x: &i16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i16>
[src]
impl Rv<i32> for BetaBinomial
[src]
fn ln_f(&self, k: &i32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i32>
[src]
impl Rv<i32> for Binomial
[src]
impl Rv<i32> for Skellam
[src]
fn ln_f(&self, x: &i32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i32>
[src]
impl Rv<i64> for BetaBinomial
[src]
fn ln_f(&self, k: &i64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i64>
[src]
impl Rv<i64> for Binomial
[src]
impl Rv<i8> for BetaBinomial
[src]
fn ln_f(&self, k: &i8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i8>
[src]
impl Rv<i8> for Binomial
[src]
impl Rv<i8> for Skellam
[src]
fn ln_f(&self, x: &i8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> i8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<i8>
[src]
impl Rv<u16> for BetaBinomial
[src]
fn ln_f(&self, k: &u16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u16>
[src]
impl Rv<u16> for Binomial
[src]
impl Rv<u16> for NegBinomial
[src]
fn ln_f(&self, x: &u16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u16>
[src]
impl Rv<u16> for Poisson
[src]
fn ln_f(&self, x: &u16) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u16
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u16>
[src]
impl Rv<u32> for BetaBinomial
[src]
fn ln_f(&self, k: &u32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u32>
[src]
impl Rv<u32> for Binomial
[src]
impl Rv<u32> for NegBinomial
[src]
fn ln_f(&self, x: &u32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u32>
[src]
impl Rv<u32> for Poisson
[src]
fn ln_f(&self, x: &u32) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u32
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u32>
[src]
impl Rv<u64> for BetaBinomial
[src]
fn ln_f(&self, k: &u64) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u64
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u64>
[src]
impl Rv<u64> for Binomial
[src]
impl Rv<u8> for BetaBinomial
[src]
fn ln_f(&self, k: &u8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u8>
[src]
impl Rv<u8> for Binomial
[src]
impl Rv<u8> for NegBinomial
[src]
fn ln_f(&self, x: &u8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u8>
[src]
impl Rv<u8> for Poisson
[src]
fn ln_f(&self, x: &u8) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> u8
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<u8>
[src]
impl Rv<usize> for BetaBinomial
[src]
fn ln_f(&self, k: &usize) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> usize
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<usize>
[src]
impl Rv<usize> for Binomial
[src]
impl Rv<Partition> for Crp
[src]
impl Rv<Bernoulli> for Beta
[src]
impl Rv<Categorical> for Dirichlet
[src]
fn ln_f(&self, x: &Categorical) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> Categorical
[src]
impl Rv<Categorical> for SymmetricDirichlet
[src]
fn ln_f(&self, x: &Categorical) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> Categorical
[src]
impl Rv<Gaussian> for NormalGamma
[src]
impl Rv<MvGaussian> for NormalInvWishart
[src]
fn ln_f(&self, x: &MvGaussian) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> MvGaussian
[src]
impl Rv<Poisson> for Gamma
[src]
impl Rv<Vec<f64>> for SymmetricDirichlet
[src]
impl Rv<Vec<f64>> for Dirichlet
[src]
impl Rv<Matrix<f64, Dynamic, Dynamic, <DefaultAllocator as Allocator<f64, Dynamic, Dynamic>>::Buffer>> for InvWishart
[src]
fn ln_f(&self, x: &DMatrix<f64>) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> DMatrix<f64>
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<DMatrix<f64>>
[src]
impl Rv<Matrix<f64, Dynamic, U1, VecStorage<f64, Dynamic, U1>>> for MvGaussian
[src]
fn ln_f(&self, x: &DVector<f64>) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> DVector<f64>
[src]
impl<Fx, X> Rv<X> for Fx where
Fx: Deref,
Fx::Target: Rv<X>,
[src]
Fx: Deref,
Fx::Target: Rv<X>,
fn ln_f(&self, x: &X) -> f64
[src]
fn f(&self, x: &X) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> X
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X>
[src]
impl<X> Rv<X> for Geometric where
X: Unsigned + Integer + FromPrimitive + ToPrimitive + Saturating + Bounded,
[src]
X: Unsigned + Integer + FromPrimitive + ToPrimitive + Saturating + Bounded,
impl<X, Fx> Rv<X> for Mixture<Fx> where
Fx: Rv<X>,
[src]
Fx: Rv<X>,
fn ln_f(&self, x: &X) -> f64
[src]
fn f(&self, x: &X) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> X
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X>
[src]
impl<X, Fx, Pr> Rv<X> for ConjugateModel<X, Fx, Pr> where
Fx: Rv<X> + HasSuffStat<X>,
Pr: ConjugatePrior<X, Fx>,
[src]
Fx: Rv<X> + HasSuffStat<X>,
Pr: ConjugatePrior<X, Fx>,
fn ln_f(&self, x: &X) -> f64
[src]
fn draw<R: Rng>(&self, rng: &mut R) -> X
[src]
fn sample<R: Rng>(&self, n: usize, rng: &mut R) -> Vec<X>
[src]
impl<X, T> Rv<X> for DiscreteUniform<T> where
T: DuParam + SampleUniform + Copy,
X: Integer + From<T>,
[src]
T: DuParam + SampleUniform + Copy,
X: Integer + From<T>,