weighted_rand
A weighted random sampling crate using Walker's Alias Method.
Walker's Alias Method (WAM) is one method for performing weighted random sampling.
WAM weights each index of a array by giving two pieces of information: an alias to a different index and a probability to decide whether to jump to that index.
WAM is a very fast algorithm, and its computational complexity of the search is O(1).
The difference in complexity between WAM and the Cumulative Sum Method is as follows.
| Algorithm | Building table | Search |
|---|---|---|
| Walker's Alias Method | O(N) | O(1) |
| Cumulative Sum Method | O(N) | O(log N) |
The API documentation is here.
Usage
Add this to your Cargo.toml:
[]
= "0.4"
Example
use WalkerTableBuilder;
Also, index_weiaghts supports &[f32], like:
use rand;
use *;
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.