4个版本 (2个重大更新)
0.3.0 | 2024年1月21日 |
---|---|
0.2.0 | 2024年1月20日 |
0.1.1 | 2024年1月20日 |
0.1.0 | 2024年1月20日 |
#1116 在 算法
每月下载量 32次
21KB
401 行
Infinity Sampler
✨ 无分配 ✨ 最小依赖 ✨ no_std
兼容 ✨
Infinity Sampler 允许您将无限值流自动采样到一个固定大小的缓冲区中,同时保持样本的均匀分布。
这是Reservoir Sampling算法的确定性变体。写入操作为 O(1),迭代操作为 O(N)。参见 [math] 以获取图解解释。
您的主要接口是 [SamplingReservoir] 结构体
use infinity_sampler::SamplingReservoir;
let mut reservoir = SamplingReservoir::<u32, 8>::new();
for i in 0..256 {
reservoir.sample(i);
}
let samples: Vec<_> = reservoir.into_ordered_iter().collect();
assert_eq!(samples, vec![0, 32, 64, 96, 128, 160, 192, 224]);
依赖项
~480KB