#random #random-distribution #zipf-distribution

zipf

A fast generator of discrete, bounded Zipf-distributed random numbers

14 stable releases (7 major)

7.0.2 Feb 8, 2025
7.0.1 Aug 13, 2023
7.0.0 Dec 25, 2020
6.1.0 Oct 22, 2019
0.2.0 Jan 23, 2017

#8 in #random-distribution

Download history 2876/week @ 2025-09-11 2521/week @ 2025-09-18 4859/week @ 2025-09-25 1942/week @ 2025-10-02 2407/week @ 2025-10-09 3415/week @ 2025-10-16 2700/week @ 2025-10-23 2529/week @ 2025-10-30 5863/week @ 2025-11-06 2717/week @ 2025-11-13 4311/week @ 2025-11-20 2802/week @ 2025-11-27 3025/week @ 2025-12-04 2415/week @ 2025-12-11 2474/week @ 2025-12-18 1696/week @ 2025-12-25

10,009 downloads per month
Used in 14 crates (10 directly)

Apache-2.0

16KB
153 lines

[!CAUTION] This crate is deprecated. Prefer rand_distr::Zipf.


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

~340KB