前提・実現したいこと
実行ごとではなく, その都度に異なる乱数を代入したい.
配列を10000個用意して14の乱数を発生させています.4の値が発生する確率は, 25%ずつだと考えられますので,
1
1は2500個, 2は2500個, 3は2500個, 4は2500個
という風になるようにしたいのですが, 下のようになってしまいます.
発生している問題
$ ./XCSC 1は0個, 2は10000個, 3は0個, 4は0個 $ ./XCSC 1は0個, 2は10000個, 3は0個, 4は0個 $ ./XCSC 1は0個, 2は0個, 3は10000個, 4は0個 $
該当のソースコード
c++
1#include<stdio.h> 2#include<stdlib.h> 3#include<math.h> 4#include<time.h> 5#include"MT.h" 6 7 8/*[0,1]の一様実乱数発生*/ 9double MT(void) 10{ 11 init_genrand((unsigned)time(NULL)); 12 return genrand_real1(); 13} 14 15/*乱数分類(乱数に基づいて,1~n(引数)の値を返す)*/ 16int cla(int n) 17{ 18 init_genrand((unsigned)time(NULL)); 19 return genrand_int32()%(n)+1; 20} 21 22int main() { 23 int a[10000]; 24 int i, j, k, l, m, n; 25 k = 0; 26 l = 0; 27 m = 0; 28 n = 0; 29 for(i=0; i < 10000; i++) { 30 a[i] = cla(4); 31 if(a[i] == 1) 32 k++; 33 if(a[i] == 2) 34 l++; 35 if(a[i] == 3) 36 m++; 37 if(a[i] == 4) 38 n++; 39 } 40 printf("1は%d個, 2は%d個, 3は%d個, 4は%d個\n" , k, l, m, n); 41 return 0; 42} 43
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/13 04:53