###前提・実現したいこと
乱数を二つ生成し、Box-Muller法を用いて、平均1、分散4に従う正規乱数を生成するプログラムを作成し、乱数をn個生成し、標本平均値と標本分散をいくつかのnごとに求める。という課題で、作って実行してみると、エラーは出ないのですが何も出力されません。原因を教えていただければ助かります。
また、#defineと#undefを繰り返してnの値を変えているのですが、繰り返し文のようなものは使えないのでしょうか?ご回答、よろしくお願いいたします。
###発生している問題・エラーメッセージ
エラーは出ないのですが、何も出力されません。
###該当のソースコード
#include<stdio.h> #include<math.h> #include<stdlib.h> #define mu 1.0 #define sigma 2.0 #define PI 3.1415926535897932384626433832795 #define n 500 void Random(double I, double *R){ int a, k; long m; a = 69621; m = pow(2, 32); for (k = 0; k<n; k++){ I = a*I - floor(a*I / m)*m; R[k] = I / (m - 1); } } void Ri(void){ int i, k; double total, v, aver, disp; double u1[n], u2[n], x[n], X[n]; Random(1.0, u1); Random(2.0, u2); for (i = 0; i<n; i++){ x[i] = sqrt(-2 * log(u1[i]))*cos(2 * PI*u2[i]); X[i] = sigma * x[i] + mu; } total = 0; for (i = 0; i < n; i++){ total += X[i]; aver = total / n; } v = 0; for (i = 0; i<n; i++){ v += (aver - X[i])*(aver - X[i]); disp = v / n; } printf("%d %f %f\n", n, aver, disp); } int main(void){ Ri; #undef n #define n 1000 Ri; #undef n #define n 1500 Ri; #undef n #define n 2000 Ri; #undef n #define n 2500 Ri; #undef n #define n 3000 Ri; #undef n #define n 3500 Ri; #undef n #define n 4000 Ri; #undef n #define n 4500 Ri; #undef n #define n 5000 Ri; return 0; }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/28 06:21
2017/05/28 06:23
2017/05/28 12:12 編集
2017/05/28 12:46