正規乱数

Box–Muller 法

「Box–Muller 法」は、互いに独立な (0, 1) 上に一様分布する2つの確率変数 X, Y から、標準正規分布に従う互いに独立な2つの確率変数 Z1, Z2 を生成するものである。

Z1 = sqrt( -2 * ln( X ) ) * cos( 2 * PI * Y )
Z2 = sqrt( -2 * ln( X ) ) * sin( 2 * PI * Y )

参考:

正規乱数 – Wikipedia

ボックスミュラー法 – Wikipedia

ボックスミュラー法の証明 | 高校数学の美しい物語

Box-Muller 法による正規分布列生成 – Qiita

C# でボックスミュラー法による正規分布に従う乱数生成 | 真実の楽譜

Box-Muller 法で正規分布する乱数を生成する | blog.PanicBlanket.com

乱数列

参考:

乱数列 – Wikipedia

擬似乱数

参考:

擬似乱数とは何か | funanz

擬似乱数 – Wikipedia

線形合同法

  • 英語表記 Linear Congruential Generators (LCG)
Park & Miller
x_next = ( 48271 * x_current ) % ( 2^31 - 1 )

参考:

擬似乱数の話/線形合同法 – Qiita

線形合同法 | Algoful

乱数発生方法と線形合同法のメモ | はしくれエンジニアもどきのメモ

線形合同法の周期 | tsujimotter のノートブック

線形合同法のパラメータを乱数列から求めてみる | みつの CTF 精進記録

線形合同法 – Wikipedia

メルセンヌツイスタ (Mersenne Twister)

参考:

メルセンヌツイスタをわかった気になる | 6715.jp

メルセンヌツイスタについてちょっとだけ真面目に解説する記事/線形合同法と LFSR – Qiita

メルセンヌツイスタはそんなに衝突しない – Qiita

メルセンヌツイスタ – Wikipedia

Mersenne Twister – A Random Number Generator | 松本眞

Mersenne Twister with Improved Initialization (mt19937ar) | 松本眞

Xorshift

参考:

Xorshift から派生した擬似乱数生成器 – Qiita

C++ での乱数の選択 – Qiita

A PRNG Shootout

暗号論的擬似乱数生成器

参考:

暗号論的擬似乱数生成器 – Wikipedia

ノンス/ナンス (Nonce)

参考:

ノンス – Wikipedia

解析

参考:

良い乱数/悪い乱数 | 和田維作

悪い乱数のリスクを視覚的に明らかにする | 和田維作

実装

参考:

乱数の仕組み – Qiita

乱数について本気出して考えてみる | TechRacho

C言語による乱数生成 | 近江崇宏

メルセンヌ・ツイスタの C# / C++ ポート | C++マニアック

乱数らしさ

参考:

偏りがあるように思わせない/偏った乱数生成 | 北陸先端科学技術大学院大学 情報科学研究科 池田研究室

シャッフル

  • Fisher–Yates シャッフル

参考:

Fisher-Yates アルゴリズムを用いて自作で配列をシャッフルさせる – Qiita

シャッフルした結果が偏ると相談を受けたときに確認すること | yoheimuta

そのシャッフル、本当にシャッフルですか?何気ない落とし穴にハマった話 | BASE プロダクトチームブログ

Fisher-Yates アルゴリズム – 世界最速の配列シャッフルアルゴリズム | Panda Noir

Fisher-Yates のシャッフルアルゴリズムをC言語で実装してみる | IT を使っていこう

ランダムシャッフル | Programming Place Plus

ランダムに配列をシャッフルする Fisher-Yates Shuffle アルゴリズム を理解した | 3匹の猫

フィッシャーイェーツのシャッフル – Wikipedia

Fisher–Yates Shuffle – Wikipedia

資料

あなたの使っている乱数、大丈夫? (PDF) | 松本眞

まとめ

C++ での乱数の選択 – Qiita

記事をシェアする:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA