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 在 算法
931 每月下载量
用于 256 个包 (直接使用 3 个)
89KB
1.5K SLoC
Rust 中的梅森旋转器
这是对 梅森旋转器 伪随机数生成器的纯 Rust 端口。有关建议用法,请参阅 rustdoc。
算法
- MT19937 (32位版本)
- MT19937-64 (64位版本)
许可证
在以下任一许可证下发布:
- Apache License 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),任选其一。
贡献
除非你明确声明,否则任何提交的旨在包含在作品中的贡献,根据 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();
可移植性
请注意,MT19937
和 MT19937_64
虽然名称相似,但 不是 相同的算法。它们从相同的种子产生不同的输出流。如果您对可移植的可重复性很重要,您将需要选择这两个算法中的特定口味。
依赖关系
~315–540KB