5

最近我为 64 位integer(或long)实现了 MersenneTwister。是否有关于如何测试 PRNG 的指南或示例,以便我可以知道我的实现是否是足够好的解决方案。我对如何验证我的实现是否具有足够好的均匀分布特别感兴趣。

这与 MersenneTwister 相关的越具体越好。

4

4 回答 4

12

您不需要测试 Mersenne Twister算法——那些真正知道他们在做什么的人已经一遍又一遍地完成了——你只需要测试你是否正确地实现了该算法。

您可以访问Mersenne Twister 网站并获取他们的测试输出。如果您产生与他们相同的输出序列,那么您可能已经正确实现了该算法。

请注意,MT 站点有一个专门针对64 位机器的链接以及针对 32 位和 64 位版本的不同测试输出。

于 2010-12-03T23:06:05.327 回答
7

PRNG 的标准测试组合是顽固测试

于 2010-12-03T19:41:22.550 回答
2

最简单的方法(如果它是真正的通用 MT)是将其与具有相同种子的已知良好的 MT 库进行比较。

于 2010-12-03T19:41:37.527 回答
1

啊哈!

正如其他人所说 - 对算法使用已知的答案测试向量。如果您满足测试向量,您可以合理地确定您的生成器可以正常工作。

如果你真的想测试生成器。使用 Dieharder 工具实现的 DIEHARD 测试++:

http://www.phy.duke.edu/~rgb/General/dieharder.php

于 2011-06-22T13:25:13.707 回答