プロが教えるわが家の防犯対策術!

c言語で標準正規乱数を発生させるために中心極限定理を使用することについての質問なのですが、

まず、一様乱数[0-1]を発生させる関数を混合合同法を用いて作成しました。

この一様乱数発生関数を用いて中心極限定理に基づき、標準正規乱数を発生させる関数を作成したいのですが、中心極限定理の具体的な使用方法がどうしてもわかりません。

どうかアドバイスをよろしくお願いします。

A 回答 (2件)

C言語については助言できませんが、C言語にある一様乱数を発生させる関数rand()を利用して正規乱数を発生させられれば良いのですよね?



[C言語 正規乱数]とか[ボックス・ミューラー法]というキーワードで検索してみましたか?

例えば、
http://www.inf.ie.kanagawa-u.ac.jp/c_learn/class …
http://www.sci.kagoshima-u.ac.jp/~nishio/ACP2006 …
など出てきますが。
    • good
    • 1
この回答へのお礼

ありがとうございます!
参考になりました。
なんとか解決しそうです。

お礼日時:2007/06/21 15:27

Wikipediaのこのページはご覧になったでしょうか?


http://ja.wikipedia.org/wiki/%E4%B9%B1%E6%95%B0# …
"12個の一様乱数(0,1]の和から6を減ずる方法もよく用いられる"と書いてあります。

また、以下のURLにも同じような情報があります。
http://econom01.cc.sophia.ac.jp/sda/normal.htm

const int N = 12;
float A[N];
for(int i=0;i<N;i++)A[i] = rand();

float B = 0;
for(int i=0;i<N;i++) B += (A[i]-0.5f)
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
wikipedia等のページは見たのですが、実際にプログラムにする際、どのように組み込めばよいのかわかりませんでした。
atushi256さんのおかげでだいぶ理解できました。

ただ、もう1つ疑問があります。
この場で質問を増やすのは本当に申し訳ないのですが、
for(int i=0;i<N;i++) B += (A[i]-0.5f)
のfとは何なのでしょうか??

お礼日時:2007/06/20 17:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!