3 个版本 (破坏性)
使用旧的 Rust 2015
0.3.0 | 2020 年 11 月 20 日 |
---|---|
0.2.0 | 2018 年 8 月 13 日 |
0.1.0 | 2016 年 1 月 18 日 |
#248 在 模拟
25 每月下载量
7KB
86 代码行
注意:现在 rand
包有了对 别名方法的内置支持,因此此库不再需要。
使用别名方法的 Rust 实现轮盘赌选择。这可以用来模拟一个装有重量的骰子以及类似的情况。
初始化需要 O(n) 的时间;选择一个随机元素需要 O(1) 的时间。这比原始算法快得多(其中最常见的是通常被称为“轮盘赌选择”)。有关算法的深入解释,请参阅 http://www.keithschwarz.com/darts-dice-coins/。
此代码是从 http://www.keithschwarz.com/interesting/code/?dir=alias-method 翻译过来的。
示例
使用 cargo run --example simple
运行示例
extern crate rand;
extern crate roulette;
use roulette::Roulette;
fn main() {
let mut rng = rand::thread_rng();
let roulette = Roulette::new(vec![
('a', 1.0), ('b', 1.0), ('c', 0.5), ('d', 0.0)]);
for _ in 0..10 {
let rand = roulette.sample(&mut rng);
println!("{}", rand);
}
}
在这个示例中,rand
有 40% 的概率是 'a',40% 的概率是 'b',20% 的概率是 'c'。
依赖项
~535KB
~10K SLoC