13 stable releases (7 major)

7.0.1 Aug 13, 2023
7.0.0 Dec 25, 2020
6.1.0 Oct 22, 2019
6.0.0 Jun 28, 2019
0.2.0 Jan 23, 2017

#47 in Algorithms

Download history 9321/week @ 2024-03-14 10946/week @ 2024-03-21 10634/week @ 2024-03-28 13773/week @ 2024-04-04 9772/week @ 2024-04-11 10453/week @ 2024-04-18 14001/week @ 2024-04-25 11260/week @ 2024-05-02 11721/week @ 2024-05-09 10484/week @ 2024-05-16 8320/week @ 2024-05-23 13511/week @ 2024-05-30 16530/week @ 2024-06-06 8781/week @ 2024-06-13 9646/week @ 2024-06-20 10649/week @ 2024-06-27

48,740 downloads per month
Used in 17 crates (13 directly)

Apache-2.0

15KB
152 lines

rust-zipf

Crates.io Documentation Codecov Dependency status

Rust implementation of a fast, discrete, bounded, Zipf-distributed random number generator. Compared to the implementation provided by randomkit (which binds to NumPy's fork of RandomKit), this crate is approximately twice as fast:

$ cargo +nightly bench
test tests::bench_randomkit ... bench:         339 ns/iter (+/- 18)
test tests::bench_us        ... bench:          68 ns/iter (+/- 1)
test tests::bench_threadrng ... bench:          11 ns/iter (+/- 0)

It is also both driven by, and provides, a Rust random number generator.

This implementation is effectively a direct port of Apache Common's RejectionInversionZipfSampler, written in Java. It is based on the method described by Wolfgang Hörmann and Gerhard Derflinger in Rejection-inversion to generate variates from monotone discrete distributions from ACM Transactions on Modeling and Computer Simulation (TOMACS) 6.3 (1996).

Dependencies

~305KB