Crate probability_rs

Crate probability_rs 

Source
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.