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

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. 참고
  - 유사 문제

Posted by 카켈