Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 rand()와 srand() 함수로 난수 생성하기

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)은 현재 시각을 초 단위로 반환하므로, 프로그램이 실행되는 시점이 달라질 때마다 시드 값도 달라지고, 그 결과 매번 새로운 난수 시퀀스를 얻을 수 있습니다.