最近我实现了一个64位整数
(或长整型
)的MersenneTwister。是否有指南或示例,以便我可以测试PRNG,以便我知道我的实现是否是足够好的解决方案。我特别关注如何验证我的实现是否具有足够好的均匀分布。
这与MersenneTwister越具体越好。
你不需要测试 Mersenne Twister 算法 —— 这个已经被真正懂行的人们反复测试过了 —— 你只需要测试是否已经正确地 实现 了这个算法。
你可以前往 Mersenne Twister 网站 并获取他们的 测试输出。如果你产生了与他们相同的输出序列,那么你很可能已经正确地实现了这个算法。
请注意,MT 网站上有一个专门针对 64 位机器 的链接,并且为 32 位和 64 位版本提供不同的测试输出。
PRNG的标准测试是Diehard Tests。
(意思是,用于测试伪随机数生成器的标准测试是Diehard Tests。)如果这是真正通用的机器翻译,最简单的方法就是将其与具有相同种子的已知良好的机器翻译库进行比较。
你好!
正如其他人所说 - 使用算法的已知答案测试向量。如果你满足了测试向量,你可以相当确定你的生成器是有效的。
如果你真的想要测试生成器,请使用Dieharder工具实现的DIEHARD tests++:
long
。如果所有以这种方式生成的非负long
都相同且具有相同的排序,则可以安全地假定两个实现是相同的吗? - Daniel Fath