4个版本

0.2.2 2021年7月20日
0.2.1 2021年7月17日
0.2.0 2021年7月16日
0.1.0 2021年7月16日

算法 中排名 2239

Download history • Rust 包仓库 61/week @ 2024-03-13 • Rust 包仓库 134/week @ 2024-03-20 • Rust 包仓库 145/week @ 2024-03-27 • Rust 包仓库 280/week @ 2024-04-03 • Rust 包仓库 98/week @ 2024-04-10 • Rust 包仓库 290/week @ 2024-04-17 • Rust 包仓库 143/week @ 2024-04-24 • Rust 包仓库 77/week @ 2024-05-01 • Rust 包仓库 143/week @ 2024-05-08 • Rust 包仓库 153/week @ 2024-05-15 • Rust 包仓库 522/week @ 2024-05-22 • Rust 包仓库 193/week @ 2024-05-29 • Rust 包仓库 332/week @ 2024-06-05 • Rust 包仓库 239/week @ 2024-06-12 • Rust 包仓库 396/week @ 2024-06-19 • Rust 包仓库 359/week @ 2024-06-26 • Rust 包仓库

每月下载量 1,339
3 crates 中使用

MIT/Apache

15KB
206

alea

Crates.io Documentation License

一个零依赖的快速数字生成库,注重易用性(不再需要在每个地方传递&mut rng!)。

该实现基于wyrand,一个高质量且快速的生成器。

这个crate深受fastrand的启发。

使用方法

将以下内容添加到你的Cargo.toml

[dependencies]
alea = "0.2"

示例

抛硬币

if alea::bool() {
  println!("heads");
} else {
  println!("tails");
}

生成一个u64

let u = alea::u64();

使用随机整数填充一个向量

let n = 1_000_000;

let mut v = vec![0; n];
for i in 0..n {
  v[i] = alea::i32_in_range(-200, 150);
}

设置生成器的种子以获得可重复的结果

alea::set_seed(10);

基准测试

基准测试使用criterion.rs运行。报告的值是平均值和标准偏差。要运行基准测试,请克隆仓库并运行

cargo bench
alea fastrand rand rand_pcg
f64 2.0002 ns +/- 21.718 ps 3.6868 ns +/- 40.030 ps 4.7417 ns +/- 75.082 ps 1.4531 ns +/- 73.249 ps
f32 2.0911 ns +/- 87.985 ps 2.6735 ns +/- 35.334 ps 1.8259 ns +/- 34.666 ps 1.4482 ns +/- 29.133 ps
u64 2.0062 ns +/- 13.639 ps 5.1602 ns +/- 132.48 ps 4.6494 ns +/- 68.218 ps 1.3561 ns +/- 7.0908 ps
u32 1.9777 ns +/- 4.3646 ps 4.5852 ns +/- 120.84 ps 1.6488 ns +/- 55.921 ps 1.3668 ns +/- 10.669 ps
u64 在范围内 4.5298 ns +/- 99.716 ps 5.1845 ns +/- 240.30 ps 9.8593 ns +/- 41.581 ps 5.4817 ns +/- 21.622 ps
u32 在范围内 2.6764 ns +/- 32.698 ps 4.3292 ns +/- 20.041 ps 5.5542 ns +/- 45.249 ps 4.9378 ns +/- 96.550 ps
i64 2.0042 ns +/- 23.321 ps 3.7119 ns +/- 44.196 ps 4.6275 ns +/- 63.446 ps 1.3506 ns +/- 17.385 ps
i32 1.9826 ns ± 10.443 ps 2.6396 ns ± 7.6008 ps 1.6326 ns ± 26.437 ps 1.3668 ns ± 7.4342 ps
i64 在范围内 4.4474 ns ± 96.470 ps 3.8003 ns ± 16.704 ps 5.6069 ns ± 54.102 ps 5.5278 ns ± 84.057 ps
i32 在范围内 2.4168 ns ± 19.926 ps 2.7006 ns ± 6.5716 ps 2.8754 ns ± 26.128 ps 4.9530 ns ± 179.12 ps

无运行时依赖