#抽样 #元素 #别名 #样本 #列表 #分布 #别名方法

vose-alias

给定离散概率分布从列表中抽取元素的Vose别名方法的实现

1个稳定版本

1.0.0 2020年10月27日

#66 in #别名

自定义许可证

18KB
266

Vose Alias

这是一个Rust语言的Vose-Alias算法实现。该算法允许根据离散概率分布从列表中抽取元素。

对于包含 n 个元素的向量,初始化时间为 O(n),抽样时间为 O(1),内存使用为 O(n)

使用方法

将此添加到您的 Cargo.toml

[dependencies]
vose-alias = "1.0.0"

示例

use vose_alias::VoseAlias

let va = VoseAlias::new(vec!["orange", "yellow", "green", "turquoise", "grey", "blue", "pink"], vec![0.125, 0.2, 0.1, 0.25, 0.1, 0.1, 0.125]);
let element = va.sample();

包功能

此包提供了一个 VoseAlias 结构,该结构存储由库的用户提供的元素列表以及概率和别名表。概率和别名表由 new 函数创建。

该包还提供了一个 sample 函数,该函数允许以恒定时间从元素向量中抽取元素。该函数直接返回元素。

外部资源

有关实现的方法以及算法(伪代码)的描述,请参阅[https://www.keithschwarz.com/darts-dice-coins/]

依赖项

~565KB
~11K SLoC