#random #rand #mt #no-alloc

无 std rand_mt

Mersenne Twister 随机数生成器参考

9 个稳定版本

4.2.2 2023 年 6 月 2 日
4.2.1 2022 年 10 月 11 日
4.2.0 2022 年 8 月 9 日
4.1.3 2022 年 7 月 31 日
2.0.0 2020 年 3 月 15 日

#107算法

Download history 703/week @ 2024-04-04 1053/week @ 2024-04-11 786/week @ 2024-04-18 693/week @ 2024-04-25 565/week @ 2024-05-02 723/week @ 2024-05-09 649/week @ 2024-05-16 556/week @ 2024-05-23 525/week @ 2024-05-30 403/week @ 2024-06-06 578/week @ 2024-06-13 744/week @ 2024-06-20 670/week @ 2024-06-27 616/week @ 2024-07-04 864/week @ 2024-07-11 733/week @ 2024-07-18

3,048 每月下载量
用于 7 个 crate(4 个直接使用)

MIT/Apache

160KB
5K SLoC

rand_mt

GitHub Actions Code Coverage Discord Twitter
Crate API API trunk

实现了一系列 Mersenne Twister 随机数生成器。

一个周期为 219937-1 的非常快速的随机数生成器。(Makoto Matsumoto,1997)。

Mersenne Twister 算法不适合加密用途,但非常普遍。请参阅 Mersenne Twister 网站。Mersenne Twister 的一个变体是 Ruby 的默认 PRNG

此 crate 可选依赖于 rand_core 并在此 crate 的 RNG 上实现 RngCore

用法

将此添加到您的 Cargo.toml

[dependencies]
rand_mt = "4.2.2"

然后创建一个 RNG,如下所示:

use rand_mt::Mt64;

let mut rng = Mt64::new_unseeded();
assert_ne!(rng.next_u64(), rng.next_u64());

crate 功能

rand_mtno_std 兼容。rand_mt 有几个可选功能默认启用

  • rand-traits - 启用对 rand_core 的依赖。启用此功能将在 crate 的 RNG 上实现 RngCoreSeedableRng
  • std - 启用对 Rust 标准库的依赖。启用此功能将在 crate 中的错误类型上启用 std::error::Error 实现。

Mersenne Twister 需要大约 2.5 KB 的内部状态。为了使在此 crate 中实现的 RNG 在其他结构中嵌入变得实际,您可能希望将 RNG 存储在 Box 中。

最低支持的 Rust 版本

此 crate 需要 Rust 1.47.0 或更高版本。此版本可以在次要版本中提升。

许可证

rand_mt 采用的是 MIT 许可证或 Apache 许可证(版本 2.0)。

rand_mtrust-mersenne-twister 衍生,版本为 1.1.1,版权所有 (c) 2015 rust-mersenne-twister 开发者。

依赖项