如何正确地种植梅森旋转算法随机数生成器?

15

事实上,这并不像我最初想的那么简单。

如果没有硬件随机数生成器,有什么最好的方法来为Mersenne Twister生成种子呢?

或者说,用于生成UUID的Mersenne Twister RNG应如何接受种子才是可接受的?


谷歌提供http://docstore.mik.ua/orelly/networking/puis/ch23_08.htm。 - Jim Balter
2
这里有一个关于伪随机数生成器的很好的讨论,包括关于PRNGs适当种子的部分(参见规则3),其中使用md5sum/dev/random来生成种子。(这也包括许多PRNG算法,比MT更容易编码,但同样出色)。 - Chris
@Chris,你想把它发布为答案吗?我认为这是一篇非常好的文章,对于通用PRNG的种子生成非常有帮助。 - hookenz
@MattH 我把我的评论作为答案添加了,并稍微详细解释了一下。感谢您的建议。 - Chris
1个回答

10

这里有一个很好的关于伪随机数生成器的讨论,包括了PRNG的适当种子设置(参见规则3),使用md5sum/dev/random/dev/urandom生成种子。你可以在这里找到更多信息。

此外,还有一些PRNG算法,比MT要容易编码(<10行代码),但同样优秀(长周期且通过所有Dieharder随机性测试)。

更多阅读:

  1. 用std::random_device种子化std::mt19937
  2. 用于Monte Carlo模拟的最佳mt19937_64种子方式
  3. 如何以跨平台方式获取(几乎)唯一的系统标识符?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接