주사위 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%)

계속하려면 아무 키나 누르십시오 . . .


+ Recent posts