주사위 2개를 '시행회수' 만큼 굴린다.
각각의 주사위에서 1부터 6까지 값이 나온 빈도와 두 주사위의 합의 빈도를 표시.
참고로 두 주사위의 합에 대한 확률은 다음과 같다.
합: 확률(퍼센트) 확률(분수)
2 : 2.78 1/36
3 : 5.56 2/36
4 : 8.33 3/36
5 : 11.11 4/36
6 : 13.89 5/36
7 : 16.67 6/36
8 : 13.89 5/36
9 : 11.11 4/36
10 : 8.33 3/36
11 : 5.56 2/36
12 : 2.78 1/36
#include <stdio.h>
#include <time.h> // time function
#include <stdlib.h> // srand, rand function
#define 시행회수 1000000
int roll_dice(void);
int ar_dice1[6] = { 0 }, ar_dice2[6] = { 0 };
int sum[13] = { 0 };
int main(void) {
int i;
srand((unsigned)time(NULL));
for (i = 0; i < 시행회수; i++)
roll_dice();
printf("DICE 1 SUMMARY\n");
for (i = 0; i < 6; i++)
printf("%d: %d회 (%.3f%%)\n", i+1, ar_dice1[i], (float) ar_dice1[i]*100 / 시행회수);
printf("\nDICE 2 SUMMARY\n");
for (i = 0; i < 6; i++)
printf("%d: %d회 (%.3f%%)\n", i + 1, ar_dice2[i], (float)ar_dice2[i]*100 / 시행회수);
printf("\nSUM SUMMARY\n");
for (i = 2; i <= 12; i++)
printf("%d: %d회 (%.3f%%)\n", i, sum[i], (float)sum[i] * 100 / 시행회수);
}
int roll_dice(void) {
int dice1, dice2;
dice1 = rand() % 6 + 1;
dice2 = rand() % 6 + 1;
ar_dice1[dice1-1]++;
ar_dice2[dice2-1]++;
sum[dice1 + dice2]++;
}
결과(예시):
DICE 1 SUMMARY
1: 166469회 (16.647%)
2: 166873회 (16.687%)
3: 166482회 (16.648%)
4: 167126회 (16.713%)
5: 167062회 (16.706%)
6: 165988회 (16.599%)
DICE 2 SUMMARY
1: 166995회 (16.699%)
2: 166479회 (16.648%)
3: 166093회 (16.609%)
4: 166700회 (16.670%)
5: 166916회 (16.692%)
6: 166817회 (16.682%)
SUM SUMMARY
2: 27616회 (2.762%)
3: 55578회 (5.558%)
4: 83506회 (8.351%)
5: 111237회 (11.124%)
6: 138731회 (13.873%)
7: 166778회 (16.678%)
8: 139064회 (13.906%)
9: 110607회 (11.061%)
10: 83449회 (8.345%)
11: 55763회 (5.576%)
12: 27671회 (2.767%)
계속하려면 아무 키나 누르십시오 . . .