#random #mersenne #rand #algorithm

mersenne_twister

梅森旋转器伪随机数生成器

11 个版本 (3 个稳定版)

使用旧 Rust 2015

1.1.1 2018年1月17日
1.1.0 2017年2月23日
1.0.0 2017年1月20日
0.3.0 2015年5月30日
0.1.0 2015年2月2日

#2168算法

Download history 533/week @ 2024-03-25 504/week @ 2024-04-01 165/week @ 2024-04-08 242/week @ 2024-04-15 223/week @ 2024-04-22 489/week @ 2024-04-29 263/week @ 2024-05-06 224/week @ 2024-05-13 242/week @ 2024-05-20 187/week @ 2024-05-27 510/week @ 2024-06-03 192/week @ 2024-06-10 194/week @ 2024-06-17 298/week @ 2024-06-24 50/week @ 2024-07-01 334/week @ 2024-07-08

931 每月下载量
用于 256 个包 (直接使用 3 个)

MIT/Apache

89KB
1.5K SLoC

Rust 中的梅森旋转器

这是对 梅森旋转器 伪随机数生成器的纯 Rust 端口。有关建议用法,请参阅 rustdoc

算法

  • MT19937 (32位版本)
  • MT19937-64 (64位版本)

许可证

在以下任一许可证下发布:

贡献

除非你明确声明,否则任何提交的旨在包含在作品中的贡献,根据 Apache-2.0 许可证定义,均应按上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

梅森旋转器

梅森旋转器伪随机数生成器的纯 Rust 端口。

这些算法不适合加密用途。 观察到几百个输出后,可以预测所有未来的输出。此库甚至实现了 recover 构造函数,可以从输出样本中重建 RNG 状态。

用法

如果你的应用程序不需要特定的梅森旋转器口味(32位或64位),你可以通过使用 MersenneTwister 类型定义来使用针对目标平台的默认口味。两种口味都接受一个 u64 种子。

extern crate mersenne_twister;
extern crate rand;
use mersenne_twister::MersenneTwister;
use rand::{Rng, SeedableRng};

fn main() {
    // Get a seed somehow.
    let seed: u64 = 0x123456789abcdef;
    // Create the default RNG.
    let mut rng: MersenneTwister = SeedableRng::from_seed(seed);

    // start grabbing randomness from rng...
}

或者如果你想使用参考实现中指定的默认(固定)种子

use std::default::Default;
let mut rng: MersenneTwister = Default::default();

可移植性

请注意,MT19937MT19937_64 虽然名称相似,但 不是 相同的算法。它们从相同的种子产生不同的输出流。如果您对可移植的可重复性很重要,您将需要选择这两个算法中的特定口味。

依赖关系

~315–540KB