疑似乱数生成アルゴリズム


回答:


10

Rでは、乱数生成のデフォルト設定は次のとおりです。

  1. U(0,1)の場合、Mersenne-Twisterアルゴリズムを使用します
  2. グアシアン数の場合、標準正規分布関数の数値反転を使用します。

これは簡単に確認できます。

> RNGkind()
[1] "Mersenne-Twister" "Inversion"

デフォルトのジェネレーターをスーパーデューパー、ウィヒマンヒル、マルサリアマルチキャリー、ユーザーが提供するPRNGなどの他のPRNGに変更することができます。詳細については、?RNGkindを参照してください。デフォルトのPRNGを変更する必要はありませんでした。

C GSLのライブラリも使用していますメルセンヌ・ツイスターをデフォルトで。


CDFを反転して通常の確率変数を生成する2番目の点について確信がありますか?通常のCDFの逆関数は、評価するにはかなり高価な関数です。Box-Mullerの方が高速だと思います。さらに高速なのは、法線を生成するためのマルサリアのジッグラト法です。
ジョンD.クック

これも疑わしいと思います。MarsagliaのZigguratはMatlabのデフォルトであり、乱数生成の分野では、MatlabがRより優れているとは思えません。
shabbychef 2010

@John確かに、ポーラーメソッドはRで使用できます。setRNGパッケージを参照してください。
10


3

George Marsagliaによって設計されたXorshift PNG。その周期(2 ^ 128-1)はMersenne-Twisterよりもはるかに短いですが、アルゴリズムの実装は非常に簡単であり、並列化に適しています。DSPチップやNvidiaのTeslaなどのメニーコアアーキテクチャで良好に機能します。


これはGPUでの実装に適していますか?詳細、参照へのリンク?
DarenW 2010

2
Thomas、Howes、Luk-2009-乱数生成のためのCPU、GPU、FPGA、および超並列プロセッサアレイの比較。doi.acm.org/10.1145/1508128.1508139。ディスカッション+ CPU、GPU、FPGA、および超並列プロセッサアレイで実行されるPNGのセットのベンチマーク。
ブロッチ

多分、L'Ecuyerの複数のストリームを持つRNG(j.mp/bzJSlm)?
2010

3

http://prng.di.unimi.it/あなたは、いくつかの乱数発生器の銃撃戦がTestU01、頑固とdieharder置き換え擬似乱数のための現代的なテストスイートを使用してテスト見つけることができます。あなたが選ぶことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.