본문 바로가기
자격증 준비

정처기 실기(C언어)

by haeun 하은 2023. 9. 19.
728x90

주사위 난수

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h>

void main(){
int hist[6] = {0,};
int n, i=0;
srand(time (NULL));
do{
i++;
n = rand()%6 + 1;
hist[n-1] += 1;
} while (i<10);
for (i=0; i<6; i++)
printf("h[%d] = %d\n", i, hist[i]);

}

hist[n-1]인 이유

`hist[n-1]`은 주사위의 각 면(1부터 6까지)을 배열 `hist`의 인덱스로 사용하는데, 이렇게 하는 이유는 배열의 인덱스가 0부터 시작하기 때문입니다.

주사위의 면은 1부터 6까지의 값을 가지며, C 언어에서 배열의 인덱스는 0부터 시작합니다. 따라서 배열 `hist`의 인덱스를 0부터 5까지 사용하여 각 면(1부터 6까지)의 빈도를 추적합니다. 예를 들어, `hist[0]`은 주사위의 1면의 빈도를 나타내고, `hist[1]`은 2면의 빈도를 나타냅니다.

그래서 `n`이 주사위의 값(1부터 6)일 때, `hist[n-1]`은 해당 면의 빈도를 증가시키는 데 사용됩니다. 이렇게 하면 주사위의 각 면에 대한 빈도가 배열의 인덱스 0부터 5까지 순서대로 저장됩니다.

코드에서 `hist[i]`를 사용하는 이유는 루프 변수 `i`를 활용하여 주사위의 결과를 `hist` 배열에 적절한 위치에 저장하고 각 면의 빈도를 추적하기 위함입니다.

루프를 사용하여 여러 번 주사위를 던질 때, 각 던짐의 결과를 `hist` 배열에 저장해야 합니다. 이 때 `i` 변수는 루프의 반복 횟수를 나타내며, 이 값을 활용하여 `hist` 배열의 적절한 인덱스에 결과를 누적시키는 데 사용됩니다.

루프가 실행될 때마다 `i` 변수는 1씩 증가하고, 각 주사위 던지기의 결과를 `n`에 저장한 후, 이 `n`을 사용하여 `hist` 배열의 적절한 인덱스에 더해집니다. 이렇게 하면 각 주사위 던지기에 대한 결과를 `hist` 배열에 누적할 수 있습니다.

코드에서 `hist[n-1]`를 사용하는 것은 배열 인덱스가 0부터 시작하고 주사위의 면은 1부터 6까지 번호가 매겨져 있기 때문에 `n` 값을 배열 인덱스로 변환하여 사용합니다. 따라서 `n`이 1일 때는 `hist` 배열의 인덱스 0을 증가시키고, `n`이 2일 때는 `hist` 배열의 인덱스 1을 증가시키는 식으로 주사위 던지기의 결과를 누적합니다. 이렇게 함으로써 각 면의 빈도를 효과적으로 추적할 수 있습니다.

728x90
반응형

댓글