さまざまな外力に対して、ランジュバン方程式のシミュレーションを行っています。Cのrand()
from stdlib.h
は私の結果にバイアスを導入する可能性があると言われ、私はMersenne Twisterを使用しています。
それにもかかわらず、線形合同発生器がシミュレーションでどのような種類の誤差を引き起こす可能性があるのかを正確に知りたい(そして見たい)。これらは私が試したものです:
- ランダムの3Dタプルを生成して、超平面を表示しようとします。何も見えません。
- 乱数の大きなベクトルのFFTを実行します。メルセンヌツイスターとの両方でほぼ同じです
rand()
。 - ブラウン運動の粒子の等分配原理の確認。両方のインテグレーターは、の期待値が同じ有効桁数でします。
- 累乗2ではないいくつかのビンにどれだけうまくビンが入っているかを確認します。どちらも同じ定性的な結果をもたらしますが、誰も優れていません。
- Brownianパスを見て、からの明確な分岐を確認し。繰り返しますが、運はありません。
- 円内のポイントの分布。塗りつぶされ、境界内のみ。それらのすべての間、および最も近い隣人の間(Shorの答え、以下のコメント)。この gistで使用できます。必要なライブラリをインストールした後、Julia 0.5.0で実行します(手順についてはgistを参照してください)。
物理シミュレーションのコンテキストに導入されたバイアスを探していることを強調したいと思います。たとえばrand()
、メルセンヌツイスターはテストしませんが、ダイハードテストは惨めに失敗しますが、現時点ではあまり意味がありません。
悪い乱数ジェネレーターがモンテカルロシミュレーションを破壊する方法について、物理的で具体的な例はありますか?
注:PRNGがいかにRANDU
ひどいものになるかを見てきました。私は、明白ではないが、無邪気に見えるが最終的にバイアスを導入するジェネレーターの例に興味があります。