C++에서는 rand() 함수를 사용하여 난수(random number)를 생성할 수 있습니다. 그리고 srand() 함수는 rand()가 사용하는 난수 생성기의 시드(seed)를 설정하는 역할을 합니다.
시드 값에 따라 출력 결과가 어떻게 달라지는지 두 가지 예제를 통해 살펴보겠습니다.
예제 1: 고정된 시드 사용
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
srand(1);
for(int i=0; i<5; i++)
cout << rand() % 100 << " ";
return 0;
}출력 결과
83 86 77 15 93
위 프로그램은 srand(1)처럼 고정된 값을 시드로 사용하기 때문에, 프로그램을 몇 번을 실행하더라도 항상 동일한 난수 시퀀스가 출력됩니다. 이는 디버깅이나 테스트 시 재현 가능한 결과가 필요할 때 유용합니다.
예제 2: 실행마다 다른 시드 사용
프로그램을 실행할 때마다 서로 다른 난수 시퀀스를 얻으려면 현재 시간을 기준으로 시드를 설정하는 srand(time(NULL))을 사용하면 됩니다. 이를 보여주는 프로그램은 다음과 같습니다.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
srand(time(NULL));
for(int i=0; i<5; i++)
cout << rand() % 100 << " ";
return 0;
}출력 결과
63 98 17 49 46
같은 프로그램을 다시 한 번 실행하면 아래와 같이 전혀 다른 결과가 출력됩니다.
44 21 19 2 83
이처럼 time(NULL)은 현재 시각을 초 단위로 반환하므로, 프로그램이 실행되는 시점이 달라질 때마다 시드 값도 달라지고, 그 결과 매번 새로운 난수 시퀀스를 얻을 수 있습니다.