simsam 0.1.0

Sample from custom discrete and continuous distributions (SciPy-like API)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//! Sample from a triangular distribution on [0, 1] with PDF f(x) = 2x.

use simsam::{from_pdf_fn, Interval};

fn main() {
    let support = Interval::new(0.0, 1.0).expect("valid interval");
    let sampler = from_pdf_fn(|x| 2.0 * x, support).expect("build sampler");

    let n = 10_000;
    let mut sum = 0.0;
    for _ in 0..n {
        sum += sampler.sample().expect("sample");
    }
    let mean = sum / n as f64;
    println!("triangular sample mean (expected ~0.667): {mean:.4}");
    println!("ppf(0.5) = {}", sampler.ppf(0.5).expect("ppf"));
}