rand() 함수를 사용하기 위해서는 stdlib를 추가해주어야합니다.
#include <stdlib.h>
rand() 함수는 램던한 int 타입의 값을 반환해줍니다.
아래와 같이 그냥 사용하여도 램던한 값이 나오기는 하지만 코드를 다시 실행을 하면 처음 나왔던 램던한 값이 고정되어서 출력됩니다.
예시 코드
#include <stdio.h>
#include <stdlib.h>
int main() {
for (int i = 0; i < 10; ++i) {
printf("%d\n", rand());
}
return 0;
}
1차 실행 | 2차 실행 | 3차 실행 |
---|---|---|
time.h를 추가하여 초기화 시켜주는 것이 일반적입니다.
#include <time.h>
다음과 같이 srand를 이용하여 램던 값을 초기화 시킬 수 있습니다.
예시 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
for (int i = 0; i < 10; ++i) {
printf("%d\n", rand());
}
return 0;
}
1차 실행 | 2차 실행 | 3차 실행 |
---|---|---|
이렇게 원하던 램던값을 구할 수 있었습니다.
random()과 rand()의 차이는 random()은 long을 반환하고, rand()는 int을 반환하는 차이점이 존재합니다.
rand()에서 초기화할때는 srand를 사용하였지만 random()에서는 srandom를 사용하여 초기화를 하시면 됩니다.
예시 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srandom(time(NULL));
for (int i = 0; i < 10; ++i) {
printf("%ld\n", random());
}
return 0;
}
유명한 방법으로 나머지와 더하기를 이용하는 방법이 존재합니다.
rand() % (최대값-최소값-1) + 최소값 과 같은 범위를 지정할 수 있습니다.
1~10의 범위를 지정하고 싶다면, rand() % 10 + 1과 같은 방법으로 범위를 지정할 수 있습니다.
출력 예시
5
10
6
1
8
5
3
1
1
9