use crate::{error::MathError, integer::Z, rational::Q, utils::sample::binomial::BinomialSampler};
impl Z {
pub fn sample_binomial(n: impl Into<Z>, p: impl Into<Q>) -> Result<Self, MathError> {
let mut bin_sampler = BinomialSampler::init(n, p)?;
Ok(bin_sampler.sample())
}
}
#[cfg(test)]
mod test_sample_binomial {
use super::{Q, Z};
#[test]
fn availability() {
let _ = Z::sample_binomial(1u16, 7u8);
let _ = Z::sample_binomial(1u32, 7u16);
let _ = Z::sample_binomial(1u64, 7u32);
let _ = Z::sample_binomial(1i8, 7u64);
let _ = Z::sample_binomial(1i16, 7i8);
let _ = Z::sample_binomial(1i32, 7i16);
let _ = Z::sample_binomial(1i64, 7i32);
let _ = Z::sample_binomial(Z::ONE, 7i64);
let _ = Z::sample_binomial(1u8, 0.5f32);
let _ = Z::sample_binomial(1u8, 0.5f64);
let _ = Z::sample_binomial(1, Q::from((1, 2)));
}
}