最近、モンテカルロ法を行うほとんどすべての研究者が間違っていると主張するコメントに出くわしました。Mersenne TwisterなどのPRNGのインスタンスごとに異なるシードを選択するだけでは、悪い衝突が発生する可能性があるため、公平な結果を保証するには不十分であるとさらに説明しました。メルセンヌツイスター上のWikipediaの記事を裏付けるようです:
複数のパラメーター値のセットを選択する方法はありますが、シード値のみが異なる(他のパラメーターは異なる)複数のMersenne Twisterインスタンスは、独立した乱数ジェネレーターを必要とするモンテカルロシミュレーションには一般的に適していません。
私は認めなければならない、私は起訴されたように有罪です。しかし、これまでに見てきた他のすべての並列モンテカルロライブラリの実装、特にALPSも同様です。
ウィキペディアの記事では、救済策を提供する2つの論文も参照しています。
- 動的な作成(DC)制度(1998)は、対応する固有多項式が互いに素であれば、彼らは独立しているという仮説に基づいて、MTのためのパラメータセットを選びます。
- 控えのためにジャンプ -linearのRNG(2008)。LCGのリープフロッグ法に似ていると思います。
どちらの方法も、メルセンヌツイスターアルゴリズムの原作者である松本と西村によって共同開発されました。
私は、数論や代数についてあまり知識がなく、上記のスキームやメルセンヌツイスターの背後にある数学を完全には理解していません。私の質問は主に実用的な性質のものです:
- そのようなスキームを採用していない場合、実際に(少なくとも私のコミュニティでは)誰もそれを気にしない場合、シミュレーションにバイアスを導入することについて本当に心配する必要がありますか?
- これらの対策の1つを実装した場合、Jump-Aheadは確固たる理論に基づいており、より近代的な方法であるため、Jump-Aheadの方が適していると思いますか?