easy software

C언어 rand()함수를 이용하여 의사난수 출력하기 본문

C언어/기타

C언어 rand()함수를 이용하여 의사난수 출력하기

JAVA 웹개발자 2015. 1. 29. 17:59

안녕하세요. 이번 시간에는 의사난수를 출력하는 방법을 알아보겠습니다.

 

의사난수란? 임의의 수입니다. 즉 랜덤넘버인거죠.

 

난수를 출력한다는것은, 무작위의 숫자를 출력한다는 뜻입니다.

 

난수를 사용하는 예는 대표적으로 로또가 있겠네요.

 

하지만 의사난수는 한번 컴파일하면 그 값이 계속해서 남아있게 됩니다.

 

두번쨰, 세번째 컴파일해도 처음에 컴파일 한 난수만 나온다는 것이 문제죠.

 

 

난수는 stdlib.h에 선언되어 있는 함수를 이용해서 출력합니다.

 

아래의 코드를 보면서 설명 드리겠습니다.

 

 

#include <stdio.h>
#include <stdlib.h> //난수발생을 위해 추가

 

int main(void){

 

     //난수의 최댓값 출력
     printf("난수의 범위 : 0부터 %d까지 \n", RAND_MAX);

 

     //난수5개를 출력
     for (int i = 0; i < 5; i++)
          printf("난수 출력 : %d \n", rand());

 

     return 0;
}

 

주석에서 RAND_MAX와 rand()는 설명하고 있으니 생략하겠습니다.

 

출력 결과를 보시면 어떤식으로 출력이 되는지 감이 잡히실겁니다.

 

그런데 이 난수를 우리가 원하는 범위의 숫자로 출력할 순 없을까요?

 

가능합니다! 중학교? 때 봤었던 공식인거 같은데요 아래를 보시죠.

 

공식 : rand() % ((원하는 최댓값 - 원하는 최솟값) + 1) + 원하는 최솟값

 

이 공식을 사용하면 원하는 범위의 값을 출력할 수 있습니다!

 

그럼 0이상 99이하의 난수 5개를 출력하려면 어떻게 해야 할까요?

 

for (int i = 0; i < 5; i++)
      printf("0이상 99이하 난수 출력 : %d \n", rand() % ((99 - 0) + 1) + 0);

 

위와 같은 코드로 작성하시면 됩니다!

 

공식이 그대로 적용되었죠? 공식을 굳이 외우지 않아도,

 

구글링을 통해서 얼마든지 확인이 가능하니 걱정마세요!

 

그리고 난수를 컴파일 할 때마다 변경할 수 있는 방법은 다음 시간에 소개해드리겠습니다.

Comments