Expand description
Probability distributions library with no external dependencies. Focus: numerical accuracy, clear API, and extensibility.
Initial features:
- Internal pseudo-random number generator (SplitMix64)
- Generic trait
Continuous - Distributions: Uniform, Normal, Exponential
- Simple discrete distribution: Bernoulli
- PDF, CDF, inverse CDF (quantile), mean and variance
- Allocation-free sampling
Quick examples:
use probability_rs::{rng::SplitMix64, dist::normal::Normal, Continuous, Distribution};
let normal = Normal::new(0.0, 1.0).unwrap();
let mut rng = SplitMix64::seed_from_u64(123);
let x = normal.sample(&mut rng);
let p = normal.pdf(0.0);
let c = normal.cdf(0.0);
let q = normal.inv_cdf(0.975); // ~ 1.96
assert!((p - 0.39894228).abs() < 1e-7);
assert!((c - 0.5).abs() < 2e-6); // tolerance due to erf approximation
assert!((q - 1.95996).abs() < 5e-3);Re-exports§
pub use dist::Continuous;pub use dist::Discrete;pub use dist::Distribution;pub use dist::Moments;
Modules§
- dist
- Collection of probability distributions.
This module groups all distribution implementations under
dist. - num
- Frequently used numerical constants.
- rng
- Internal pseudo-random number generators without external dependencies. This module declares the core RNG trait and exposes concrete RNGs as submodules.