dポイントプレゼントキャンペーン実施中!

C言語で正規分布の乱数を発生させたいのですがどうすればいいのでしょうか?
自分なりにネットで検索して調べたのですが

void gaussrand()
{

static double V1, V2, S;
static int phase = 0;
double X;
if(phase == 0) {

do {
double U1 = (double)rand() / RAND_MAX;
double U2 = (double)rand() / RAND_MAX;
V1 = 2 * U1 - 1;
V2 = 2 * U2 - 1;
S = V1 * V1 + V2 * V2;


} while(S >= 1 || S == 0);
X = V1 * sqrt(-2 * log(S) / S);


} else
X = V2 * sqrt(-2 * log(S) / S);

phase = 1 - phase;

}

こうありました。

例えば平均50の分散9の正規分布の乱数を1000個発生させて、配列seiki[1000]に代入したいときは、このプログラミングをどのようにすればいいのでしょうか?
もちろん、このソースではなく、他のもので説明していただけても全然構いません。

また、もしよろしければ、正規分布の他に、二項分布など他の分布でのデータの生成方法もお教えいただけたら幸いです。
よろしくお願いいたします。

A 回答 (1件)

gaussrand() で標準正規乱数 (平均0, 分散1の正規分布に従う乱数) が得られるから平均μ, 分散σ^2 (σの2乗)

ればσを掛けてμを足す.
    • good
    • 0

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