랜덤함수(rand, srand, time) 사용법 & 예제 (난수 생성)
1. srand와 time 함수
랜덤함수는 매번 실행될 때마다 다른 결과를 생성하여 난수를 만들어내는 함수입니다. 하지만 랜덤하게 생성되는 난수를 예측하기 위해서는 랜덤함수의 시작 지점을 정확히 알아야 합니다. 따라서 C/C++에서는 srand 함수를 이용하여 랜덤함수의 시작 시점을 설정하고, 이때 보통 time 함수를 사용합니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 현재 시간을 가져와서 시드값으로 설정
srand(time(NULL));
// 난수 생성 및 출력
int randomNum1 = rand();
printf("Random Number 1: %d\n", randomNum1);
// 다른 난수 생성 및 출력
int randomNum2 = rand();
printf("Random Number 2: %d\n", randomNum2);
return 0;
}
위 예제에서 srand 함수는 time(NULL)을 인자로 받는데, 이는 현재 시간을 가져와서 1970년 1월 1일 00:00:00부터 지금까지 흘러온 시간을 초 단위로 나타내는 값을 반환합니다. time(NULL)은 이 값을 입력으로 받아서 srand 함수에게 넘겨주는 역할을 합니다. 따라서 매번 실행될 때마다 다른 시작 시점으로 랜덤함수를 실행하게 됩니다.
2. rand 함수
rand 함수는 정해진 범위 내에서 랜덤한 값을 반환하는 함수입니다. 이때, 반환되는 값은 항상 양수이므로 음수가 필요하다면 부호를 추가해야 합니다. 아래 예제는 1부터 10까지의 범위에서 랜덤한 값을 생성하는 예제입니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 현재 시간을 가져와서 시드값으로 설정
srand(time(NULL));
// 1부터 10까지의 범위에서 난수 생성 및 출력
int randomNum = rand() % 10 + 1;
printf("Random Number: %d\n", randomNum);
return 0;
}
위 예제에서 rand() % 10은 0부터 9까지의 값을 반환하는데, 여기에 1을 더해주므로 최종적으로 1부터 10까지의 난수가 생성됩니다.
3. 난수 생성 예제
아래 예제는 1부터 100까지의 범위에서 랜덤한 숫자를 생성하여 10번 출력하는 예제입니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 현재 시간을 가져와서 시드값으로 설정
srand(time(NULL));
for (int i = 0; i < 10; i++) {
// 1부터 100까지의 범위에서 난수 생성
int randomNum = rand() % 100 + 1;
printf("Random Number %d: %d\n", i+1, randomNum);
}
return 0;
}
위 예제는 for문을 이용하여 10번 반복하면서 랜덤한 숫자를 생성하고 출력합니다. rand() % 100은 0부터 99까지의 값이 반환되는데, 여기에 1을 더해주면 최종적으로 1부터 100까지의 범위에서 난수가 생성됩니다.
이처럼 srand와 rand 함수를 적절히 활용하여 난수를 생성하면 다양한 곳에서 활용할 수 있습니다.
댓글