• 締切済み

正規分布に従う乱数

C言語で平均,標準偏差を指定して正規分布に従う乱数を発生させるにはどうしたらよいのでしょうか?

みんなの回答

  • Meowth
  • ベストアンサー率35% (130/362)
回答No.4

ちなみにwikiによると、 (ANo3の方法)またこれとは別に、簡単で擬似的な方法として、12個の一様乱数(0,1]の和から6を減ずる方法もよく用いられる(中心極限定理を参照)。近年のパーソナルコンピュータはプロセッサの進歩によって三角関数や対数関数の演算が早くなっているため、1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方がずっと高速である。 とANo2の方がいいそうだ。 (ボックス=ミューラー法もWikiにあり)

参考URL:
http://ja.wikipedia.org/wiki/%E4%B9%B1%E6%95%B0
  • Meowth
  • ベストアンサー率35% (130/362)
回答No.3

0-1の間の一様乱数を6個~10個とか足して平均を取ります。 平均1/2 σ=√{1/12n} の正規分布に漸近する 正確には多いほうがいいが、実用上必要な範囲で少なく。 (グラフを見るくらいなら6個程度でOK,検定に使うなら?) (n=12 で誤差ー3以下、6個くらいでいい)

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.2

0~1の一様分布の乱数が発生させられるならボックスミューラー法で 標準正規分布を発生させられます。 平均μ、標準偏差σにしたいならこの値をσ倍してからμ足して ください。

参考URL:
http://www.weblio.jp/content/%E4%B9%B1%E6%95%B0
回答No.1

発想の転換で考え方だけ示します。 乱数を発生させます。 その都度、平均と標準偏差を求めて下さい。 自分で許容可能な平均、標準偏差になるならその乱数を使います。 許容範囲を外れたらその乱数はなかったことにします。 初め数回は平均値前後の値を使い、その後上述の方法に切り替えます。