Struct mix_distribution::Mix
source · pub struct Mix<T, U, X>where
T: Distribution<U>,
X: SampleUniform + PartialOrd,{ /* private fields */ }
Expand description
Mixture distributions.
Examples
extern crate rand;
extern crate mix_distribution;
use rand::distributions::{Distribution, Normal};
use mix_distribution::Mix;
let mut rng = rand::thread_rng();
// Mixture of two distributions
let mix = {
let dists = vec![Normal::new(0.0, 1.0), Normal::new(1.0, 2.0)];
let weights = &[2, 1];
Mix::new(dists, weights).unwrap()
};
mix.sample(&mut rng);
// Mixture of three distributions
let mix = {
let dists = vec![Normal::new(0.0, 1.0), Normal::new(1.0, 2.0), Normal::new(-1.0, 1.0)];
let weights = &[2, 1, 3];
Mix::new(dists, weights).unwrap()
};
mix.sample(&mut rng);
Implementations§
source§impl<T, U, X> Mix<T, U, X>where
T: Distribution<U>,
X: SampleUniform + PartialOrd,
impl<T, U, X> Mix<T, U, X>where
T: Distribution<U>,
X: SampleUniform + PartialOrd,
sourcepub fn new<I, J>(dists: I, weights: J) -> Result<Self, WeightedError>where
I: IntoIterator<Item = T>,
J: IntoIterator,
J::Item: SampleBorrow<X>,
X: for<'a> AddAssign<&'a X> + Clone + Default,
pub fn new<I, J>(dists: I, weights: J) -> Result<Self, WeightedError>where
I: IntoIterator<Item = T>,
J: IntoIterator,
J::Item: SampleBorrow<X>,
X: for<'a> AddAssign<&'a X> + Clone + Default,
Creates a new Mix
.
dists
and weights
must have the same length.
Propagates errors from WeightedIndex::new()
.