7 个版本

0.3.1 2022年2月18日
0.3.0 2022年2月18日
0.2.1 2022年2月16日
0.1.2 2022年2月14日

#2277算法

MIT/Apache

22KB
524

probs

提供 domain 的定义和基本的 distribution。使用 Iterator 实现各种 sampler

基本用法

构建特定采样技术的采样器

use sampler::Global;
fn test() {
  sampler::univar::Icdf::new()

使用它采样分布

    .sample(distribution::univar::normal::<i8>(0.0, 32.0))

像使用 Iterator 一样使用它

    .enumerate()
    .for_each(|(i, x)| println!("sample#{}: {}", i, x))
}

任意分布

使用提供的采样器可以采样任何自定义分布

sampler::univar::Icdf::new()
  .sample(|x: &u8| (x % 8) as f64)

多维

使用 Gibbs 采样器 来采样高维分布

  • 使用 ndarray 来表示固定维度的领域
sampler::univar::Icdf::new()
  .gibbs(nd::Dim([2, 2]), 100) // 2x2 domain; skip first 100 samples
  .sample(|m: &nd::Array2<u8>| m.sum() as f64)

依赖项

~14MB
~109K SLoC