4

疑似乱数ジェネレーター(PRNG)を使用して、モンテカルロがキューイングタイプのシステムをシミュレートします。System.Randomを使用します。これは高速であるためですが、後続の描画間に奇妙な相関関係があり、結果に干渉することがわかりました(十分にランダムではありません)。

現在、私はMersenne Twister(http://takel.jp/mt/MersenneTwister.cs)を使用しています。これは、(これまで)私の目的には十分にランダムであることが証明されています。それは50%遅いですが、それは信頼できる結果を得るために私が喜んで支払う代償です。

モンテカルロシミュレーションに最適な.netのPRNGはどれですか?遅すぎない信頼性の高いPRNGを探しています。

4

2 に答える 2

4

メルセンヌツイスターは、多くの分野でモンテカルロシミュレーションで使用できるように最適化されているので、私はそれに固執します。

パフォーマンスが問題であり、parralellに行くことがオプションではない場合、私はジェネレーターを選びますXORshift。Geroge Marsagliaの非常に優れた(高速な)乱数ジェネレーター。

これが論文です:

ただし、暗号化ではなく、一部のモンテカルロまたはその他の統計シミュレーションに優れた高速PRNGが必要な場合は、これがおそらく最善の策です。

このSOの投稿では、JAVAで非常に単純なポートを見つけることができますが、ネット上でC#の実装を書き直したり見つけたりするのはそれほど難しいことではありません。

于 2012-11-25T10:56:06.873 に答える
0

SIMD指向の高速メルセンヌツイスター(SFMT)を使用することもできます。これは非常に高速で、SIMD命令を使用して乱数を並列に生成します。松本眞のホームページにあります。

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html

于 2018-11-15T11:55:26.813 に答える