frand

Crates.iofrand
lib.rsfrand
version0.10.1
sourcesrc
created_at2023-08-01 00:21:41.310059
updated_at2024-09-21 12:41:30.83048
descriptionBlazingly fast random number generation library
homepagehttps://github.com/engusmaze/frand
repositoryhttps://github.com/engusmaze/frand
max_upload_size
id931321
size45,393
EngusMaze (engusmaze)

documentation

README

FRand

Crate

FRand is a blazingly fast, small, and simple pseudo-random number generator (PRNG) written in Rust. The advantage of using FRand is that it can produce more random numbers per second than other libraries. It also produces high-quality random numbers using a fast non-cryptographic hashing algorithm.

To find the best constants for the algorithm, I used an automated program that tried many random constants per second and measured the bias of the output. The bias was estimated using the avalanche effect, which is a property of good hash functions that ensures that a small change in the input produces a large change in the output. The program selected the constants that minimized the bias and maximized the randomness.

FRand is really simple to use. Here is a simple example of how to use FRand to generate a random float:

use frand::Rand;

let mut rng = Rand::new();
println!("{}", rng.gen::<f32>());

Speeds

u64

rand::ThreadRng rand::SmallRng fastrand::Rng frand::Rand
1.00x 3.74x 5.80x 6.09x

f64

rand::ThreadRng rand::SmallRng fastrand::Rng frand::Rand
1.00x 3.79x 2.34x 5.57x

u128

rand::ThreadRng rand::SmallRng fastrand::Rng frand::Rand
1.00x 2.15x 6.79x 7.24x

If you have suggestions on how to improve this library, you can contribute to this project!

Commit count: 29

cargo fmt