【发布时间】:2012-04-04 12:49:30
【问题描述】:
我正在使用 PRNG(如 Mersenne Twister 和 stdlib 的 rand() 函数),我想要一个好的测试来帮助我确定 PRNG 生成的随机数据的质量。
我使用 PRNG 生成的随机数计算了 Pi 的值,我发现 rand() 和 Mersenne Twister 非常接近以提供区别(我需要在 10 个小数点后仔细检查吗?)。
我对蒙特卡洛模拟不太了解;请让我知道一些算法/应用程序(可能是一些简单但可以提供良好推理的东西),这将有助于我在质量方面区分它们。
编辑1:我之前没有注意到,但是有一个类似的线程:How to test random numbers?
编辑 2:我无法解释 NIST 的结果,正如其中一个 cmets 所述。我从random.org 得到了视觉解释模式(如果有的话)的想法,并且因为它很简单而遵循它。如果有人可以评论我的测试过程,我会很高兴:
- 使用 rand() 和 MT1997 从 [0,1] 生成 N 个随机数
- 如果
(round(genrand_real1() / rand_0_1()))则为红色像素,否则为黑色
据我所知,这不是一个非常精确的解决方案,但如果这提供了一个合理的估计,那么我现在可以接受这个。
【问题讨论】:
-
我不太确定从 伪随机数生成器 获取任何 随机数据 - 但我认为您可以使用它们实现 en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin。 .
-
您是说因为 PRNG 生成的值是可预测的吗?谢谢
-
是的,这就是区别 - 它只是提醒您检查 PRNG 是否适合您的应用程序,并且您不需要像 random.org 这样的 TRNG
标签: random montecarlo mersenne-twister