Box-Muller法
Jan 08
正規分布を持つような乱数、正規乱数、を生成したかったので、調べてみると、Box Muller法なるものがあるそうな。
以下、Wikipediaより転載
平均μ、分散σ2 の正規分布N(μ, σ2)のような正規乱数を作る場合、まず(0,1]の一様乱数をボックス=ミューラー法(Box-Muller transform)で変換してN(0, 1)の正規乱数を得ることから始める。
一様乱数(0,1]の要素αとβを次の変換を用いて変換する。
このようにして二つの相関のないN(0, 1)の正規乱数が得られる。ただしln は自然対数。
この正規乱数にσをかけて、さらにμを加えることで正規分布N(μ, σ2)の正規乱数が得られる。
またこれとは別に、簡単で擬似的な方法として、12個の一様乱数[0,1]の和から6を減ずる方法もよく用いられる。中心極限定理によって、独立した複数の一様乱数の和の分布は正規分布に近づく。さらに、12個の一様乱数[0,1]の和の分散は1となるため、6を減ずるだけで正規分布に近い確率分布が得られ、計算に都合がよい。
近年のパーソナルコンピュータはプロセッサの進歩によって三角関数や対数関数の演算が速くなっているため、1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方が、一般的によく知られた多くの擬似乱数生成器との組み合わせにおいては高速である。
但し、非常に高速な擬似乱数生成器を用いるならば、中心極限定理を用いた手法はボックス=ミュラー法を用いるよりも十分に高速な正規乱数の生成が可能である。
RSS







Japanese
English
Recent Comment