#include #include // randを使うときのヘッダ #include // 数学関数を使うときのヘッダ int main() { int i, ix; // 整数変数の定義 int hist[51]; // 頻度分布計数用の配列 double x, a, b; for(ix=(-25);ix<=25;ix++) hist[ix+25]=0; // 配列の初期化 for(i = 0; i < 100; i++) { a= (double)(rand()+1)/(double)(RAND_MAX+1); // 一様乱数α b= (double)(rand()+1)/(double)(RAND_MAX+1); // 一様乱数β x= sqrt(-2.0*log(a))*cos(2.0*3.142593*b); // 正規乱数 printf("i=%d x=%lf\n",i,x); // 正規乱数を表示 ix= (int)(x*10.0); // 標準偏差1.0→10.0 if( (ix>-25) & (ix<25) ) // 結果が-25以下または25以上は無視 hist[ix+25]++; // 数を数える } for(ix=(-25);ix<=25;ix++) printf("乱数の数値が%dの数は%d\n",ix,hist[ix+25]); // 結果の表示 return 0; }