Crates.io | frand |
lib.rs | frand |
version | 0.10.1 |
source | src |
created_at | 2023-08-01 00:21:41.310059 |
updated_at | 2024-09-21 12:41:30.83048 |
description | Blazingly fast random number generation library |
homepage | https://github.com/engusmaze/frand |
repository | https://github.com/engusmaze/frand |
max_upload_size | |
id | 931321 |
size | 45,393 |
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>());
rand::ThreadRng | rand::SmallRng | fastrand::Rng | frand::Rand |
---|---|---|---|
1.00x | 3.74x | 5.80x | 6.09x |
rand::ThreadRng | rand::SmallRng | fastrand::Rng | frand::Rand |
---|---|---|---|
1.00x | 3.79x | 2.34x | 5.57x |
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!