jonhoo/rust-zipf

Rust implementation of a fast, bounded, Zipf-distributed random number generator

34

stars

140

commits

Rust

primary language

Feb 8, 2025

updated

random-number-distributions
random-number-generators
rust

README

[!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).

Contributors

jonhoo

122 commits

gz

4 commits

chapeupreto

1 commits

jonhoo/rust-zipf

Rust implementation of a fast, bounded, Zipf-distributed random number generator

34

stars

140

commits

Rust

primary language

Feb 8, 2025

updated

random-number-distributions
random-number-generators
rust

README

[!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).

Contributors

jonhoo

122 commits

gz

4 commits

chapeupreto

1 commits

Languages

Rust

100.0%