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 在 算法
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