中心極限法による正規乱数の生成について
正規乱数を発生する方法は僕が知っている限りでは二つの方法がある。
- ボックスミュラー法
- 中心極限法
ボックスミュラー法は一様乱数を変数変換によって正規乱数に変えてしまう方法である。詳しくはぐぐって頂きたい。
中心極限法は確率変数を足していけば正規分布に従いますよという定理を用いたものである。(どんな確率変数でも正規分布に近づくというわけではないらしいです。)
普通中心極限法では12個の[0,1]の一様乱数を足して標準正規乱数を生成する。
なぜ12個なのかはご存知であろうか?すこし考えてみる。
[0,1]の一様乱数Xは平均値、標準偏差はであるので、中心極限定理によれば
は標準正規分布に従う確率変数となる。昔の計算機は平方根を計算するのにコストが掛かるためなるべく避けるべきだそうだ。ならばが有理数となるものに限られる。そのようなものはこの状況の場合、Nが平方数の3倍で表される場合に限られる。すなわち
- N = 3, 12, 27, 48...
と限られる。おそらく3じゃ少なすぎで、でもなるべく計算を軽くしたいということで12が用いられていたのであろう。
ちなみにこの一様乱数生成をメルセンヌ・ツイスタにやらせて、中心極限法とボックスミュラー法で計算時間を比べてみたが、ボックスミュラー法の方が圧倒的にはやかった。なので現代の計算機でメルセンヌ・ツイスタを用いて正規乱数を生成するのであれば、ボックスミュラー法を用いるべきなのだと思う。もしかしたらメルセンヌ・ツイスタがコストの掛かる乱数生成で12個の乱数を必要とする中心極限法だと重くなってしまうということもあるかもしれない。
追記:
さて、また明日からインターンです。研究がやばいのに…