/*氏名*/
#include <stdio.h>
#include <stdlib.h>
#define sainome 6
#define saikorokosuu 10
#define itinosainome 1
int main(void)
{
int num,C[4][11],C_set,conf,Nkai,i;
/*
int num;
int C[4][11];
・
・
・
・
・
int sai_nage
と同義
*/
/*シミュレーション回数を10^2~10^4で計算*/
int saikoro_saidai[4] = {
100,
1000,
10000,
100000,
};
int sai_nage;
/* 10C0*(5/6)^10~10C10*(1/6)^10のそれぞれの真の値を定義 */
double sinn_no_atai[11] =
{
0.16150558,
0.32301117,
0.29071005,
0.15504536,
0.05426588,
0.01302381,
0.00237064,
0.00024807,
0.00001866,
0.00000083,
0.00000002;
}
for(sai_nage = 0; sai_nage < 4; sai_nage++)
{
for(C_set = 0; C_set < 11; C_set++)
{
C[sai_nage][C_set] = 0;
}
}
for(sai_nage = 0; sai_nage < 4; sai_nage++)
{
for(Nkai = 0; Nkai < saikoro_saidai[sai_nage]; Nkai++)
{
conf = 0;
/*変数numをrand関数により乱数として発生させる。そのため、#include <stdlib.h>を*/
/*もし、ランダムな値が1であったとき、confを増加*/
for(i = 0; i < saikorokosuu; i++)
{
num = rand() %6 + 1;
if(num == sai_itinome){ conf++; }
}
if (conf == 0) {
C[sai_nage][0]++;
}
else if (conf == 1) {
C[sai_nage][1]++;
}
else if (conf == 2) {
C[sai_nage][2]++;
}
else if (conf == 3) {
C[sai_nage][3]++;
}
else if (conf == 4) {
C[sai_nage][4]++;
}
else if (conf == 5) {
C[sai_nage][5]++;
}
else if (conf == 6) {
C[sai_nage][6]++;
}
else if (conf == 7) {
C[sai_nage][7]++;
}
else if (conf == 8) {
C[sai_nage][8]++;
}
else if (conf == 9) {
C[sai_nage][9]++;
}
else if (conf == 10) {
C[sai_nage][10]++;
}
}
}
printf(" X/N 10^2回 10^3回 10^4回 10^5回 真値 \n\n");
for(C_set = 0; C_set < 11; C_set++)
{
printf(" %2d個の確率 %8.4f%12% %8.4f%12% %8.4f%12% %8.4f%12% %8.4f%12% \n"
,C_set
, (double)C[0][C_set]/saikoro_saidai[0]*100.0
, (double)C[1][C_set]/saikoro_saidai[1]*100.0
, (double)C[2][C_set]/saikoro_saidai[2]*100.0
, (double)C[3][C_set]/saikoro_saidai[3]*100.0
, sinn_no_atai[C_set]*100 );
printf(" %8.4f%16 %8.4f%16 %8.4f%16 %8.4f%16 \n"
, (double)C[0][C_set]/saikoro_saidai[0]*100.0 - sinn_no_atai[C_set]*100
, (double)C[1][C_set]/saikoro_saidai[1]*100.0 - sinn_no_atai[C_set]*100
, (double)C[2][C_set]/saikoro_saidai[2]*100.0 - sinn_no_atai[C_set]*100
, (double)C[3][C_set]/saikoro_saidai[3]*100.0 - sinn_no_atai[C_set]*100 );
}
return 0;
}