rand() 함수란?
C++에서 난수를 생성할 때 가장 기본적으로 사용되는 것이 바로 rand() 함수입니다. 이 함수는 C++에 미리 정의된 표준 라이브러리 함수로, <stdlib.h>(C++에서는 <cstdlib>) 헤더 파일에 선언되어 있습니다.
rand()는 호출될 때마다 임의의 정수를 반환하며, 나머지 연산자(%)와 함께 사용하면 원하는 범위 안의 난수를 손쉽게 만들 수 있습니다. 여기서 min_n은 생성할 난수의 최솟값, max_n은 최댓값을 의미합니다.
난수 생성에 사용되는 핵심 공식은 다음과 같습니다.
new_n = (rand() % (max_n + 1 - min_n)) + min_n
이 공식은 min_n부터 max_n까지 경계값을 포함한 범위의 난수를 반환합니다. 예를 들어 하한값과 상한값을 각각 1과 100으로 지정하면, 1부터 100 사이의 무작위 숫자가 생성됩니다.
알고리즘
시작
정수형 변수 max_n을 선언하고 100으로 초기화한다.
정수형 변수 min_n을 선언하고 1로 초기화한다.
정수형 변수 new_n과 반복문 카운터 i를 선언한다.
"생성된 난수:"라는 메시지를 출력한다.
for (i = 0; i < 10; i++)
new_n = ((rand() % (max_n + 1 - min_n)) + min_n)
new_n의 값을 출력한다.
종료.
예제 코드
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int max_n = 100;
int min_n = 1;
int new_n;
int i;
cout<<"The random number is: \n";
for (i = 0; i < 10; i++) {
new_n = ((rand() % (max_n + 1 - min_n)) + min_n);
// rand()는 임의의 정수를 반환합니다.
cout<<new_n<<endl;
}
return 0;
}
실행 결과
The random number is:
42
68
35
1
70
25
79
59
63
65
참고: 실행할 때마다 다른 난수 얻기
rand()는 별도의 설정 없이 사용하면 프로그램을 실행할 때마다 동일한 난수 시퀀스를 반환합니다. 매번 다른 결과를 얻고 싶다면 <ctime> 헤더에 포함된 srand(time(0)) 함수를 사용해 난수 시드(seed)를 현재 시간으로 초기화해 주면 됩니다.