正規乱数
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 )
参考:
Box-Muller 法による正規分布列生成 – Qiita
C# でボックスミュラー法による正規分布に従う乱数生成 | 真実の楽譜
Box-Muller 法で正規分布する乱数を生成する | blog.PanicBlanket.com
乱数列
参考:
擬似乱数
参考:
線形合同法
- 英語表記: Linear Congruential Generators (LCG)
Park & Miller
x_next = ( 48271 * x_current ) % ( 2^31 - 1 )
参考:
乱数発生方法と線形合同法のメモ | はしくれエンジニアもどきのメモ
線形合同法の周期 | tsujimotter のノートブック
線形合同法のパラメータを乱数列から求めてみる | みつの CTF 精進記録
メルセンヌツイスタ (Mersenne Twister)
参考:
メルセンヌツイスタについてちょっとだけ真面目に解説する記事/線形合同法と LFSR – Qiita
Mersenne Twister – A Random Number Generator | 松本眞
Mersenne Twister with Improved Initialization (mt19937ar) | 松本眞
Xorshift
参考:
Xorshift から派生した擬似乱数生成器 – Qiita
暗号論的擬似乱数生成器
参考:
ノンス/ナンス (Nonce)
参考:
解析
参考:
実装
参考:
メルセンヌ・ツイスタの 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匹の猫
Fisher–Yates Shuffle – Wikipedia