4 releases (breaking)
0.4.0 | Aug 6, 2019 |
---|---|
0.3.0 | Jun 6, 2019 |
0.2.0 | Jun 6, 2019 |
0.1.0 | Aug 23, 2016 |
#58 in #sampling
50 downloads per month
Used in locustdb
7KB
119 lines
aliasmethod
Implementation of Walker's Alias method by Rust.
The algorithm is principally useful when you need to random sampling with replacement by O(1)
.
Example
use rand::XorShiftRng;
use aliasmethod::AliasTable
let weights = vec![1.0, 1.0, 8.0];
let alias_table = AliasTable::new(weights)?;
let rng = XorShiftRng::from_seed([189522394, 1694417663, 1363148323, 4087496301]);
let n = alias_table.random(rng);
assert!(0 <= n && n <= weights.length);
Dependencies
~1.4–2MB
~37K SLoC