我正在对各种外力的朗之万方程进行一些模拟。被告知 C's rand()
fromstdlib.h
会在我的结果中引入偏差,我正在使用 Mersenne Twister。
不过,我想知道(并查看)线性同余生成器在我的模拟中究竟会引入什么样的错误。这些是我尝试过的事情:
- 生成随机数的 3D 元组以尝试查看超平面。我什么都看不见。
- 对大的随机数向量进行 FFT。Mersenne Twister 和
rand()
. - 检查布朗运动中粒子的均分原理。两个积分器的期望值一致具有相同数量的有效数字。
- 看看他们在一些不是二次方的垃圾箱中的垃圾箱有多好。两者都给出相同的定性结果,没有一个更好。
- 观察布朗路径可以看到明显的分歧. 再次,没有运气。
- 圆内点的分布。填充,并且仅在外围。在所有人之间以及最近的邻居之间(Shor 的回答,在评论下方)。在这个 gist中可用,只需在安装所需的库后使用 Julia 0.5.0 运行它(有关说明,请参阅 gist)。
我想强调的是,我正在寻找物理模拟中引入的偏差。例如,我已经看到rand()
了顽固的测试如何失败,而 Mersenne Twister 没有,但目前这对我来说意义不大。
你有任何物理的、具体的例子来说明一个糟糕的随机数生成器是如何破坏蒙特卡罗模拟的吗?
注意:我已经看到 PRNG 有多RANDU
糟糕。我对不明显的例子感兴趣,看起来很无辜但最终会引入偏见的生成器。