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