1. 목적
- 원하는 횟수 만큼 특정 범위의 난수를 난수를 만들줄 안다.
2. 문제 (점수 : 20 점)
- 1부터 4까지의 정수를 가지는 난수를 100개 생성하여 그 확률을 출력하라
- switch-case 문을 사용 하여라 (if-else 문 사용하지 말것)
- 출력 화면
1이 나올 확률 : 0.230
2가 나올 확률 : 0.230
3이 나올 확률 : 0.180
4가 나올 확률 : 0.360
Press any key to continue
2가 나올 확률 : 0.230
3이 나올 확률 : 0.180
4가 나올 확률 : 0.360
Press any key to continue
3. 이해
- 난수 생성 원리를 아는가?
- 필요한 확률을 출력할수 있는가?
4. 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
float one, two, three, four;
int gen, i;
one = two = three = four = 0.0;
gen = i = 0;
srand((unsigned)time(NULL));
while(i<100)
{
gen = rand() % 4 + 1;
switch(gen)
{
case 1:
one++;break;
case 2:
two++;break;
case 3:
three++;break;
case 4:
four++;break;
default:
break;
}
i++;
}
printf("1이 나올 확률 : %0.3f\n2가 나올 확률 : %0.3f\n3이 나올 확률 : %0.3f\n4가 나올 확률 : %0.3f\n", one/100, two/100, three/100, four/100);
return 0;
}
5. 해설
- switch-case 문을 써서 특정 확률을 계산 할수 있습니다.
- float 형 자료를 써서 소숫점 출력을 할수 있습니다.
- 100개가 계산 되기에 한번도 나오지 않을 확률을 0으로 했습니다. 나온다면 오류가 납니다.
6. 참고
- 유사 문제