#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
return 0;
}
rand() 함수는 stdlib.h에 선언되어 있습니다.
함수의 인자는 비워도 상관없습니다.
0~32767의 범위 중 무작위 수를 뽑아주는 함수입니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
return 0;
}
그러나 위의 소스를 다시 실행하면 결과가 똑같이 나옵니다.
그 이유는 seed 값이 똑같기 때문입니다.
srand() 함수는 stdlib.h에 선언되어 있습니다.
난수에 발생되는 seed 값을 지정합니다.
기본값은 1로 되어 있습니다.
이 함수의 인자로는 양의 정수를 넣으면 됩니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
srand(1);
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
return 0;
}
이렇게 srand(1) 하면 처음과 똑같은 결과를 볼 수 있습니다.
그러나 수를 바꾸면
결과가 달라지는 것을 확인할 수 있습니다.
하지만 시드값은 변동이 없기 때문에 또 실행하면 같은 결과가 나옵니다.
이 문제를 해결하기 위해
time() 함수를 이용해 봅시다.
time.h에 선언되어 있습니다.
이제 실행할 때마다 다른 난수가 생성됩니다.
난수 생성 시 원하는 범위까지의 난수를 생성하고 싶은 경우
rand() % ( (마지막 값 - 시작 값) + 1 ) + 시작 값 하시면 됩니다.
1에서 50까지의 난수 범위를 설정할 때는
rand() % ( ( 50 - 1 ) + 1 ) + 1
식을 간단하게 하면 다음과 같습니다.
rand() % 50 + 1
이렇게 하면 범위지정이 가능합니다.
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 구조체 (구조체 포인터 / typedef) (0) | 2019.07.23 |
---|---|
C언어 변수 (지역/전역변수) (0) | 2019.07.23 |
C언어 제어문 (switch~case / break / continue) (0) | 2019.07.18 |
C언어 제어문 (while / do while / for) (0) | 2019.07.18 |
C언어 제어문 (if / if else / else if) (0) | 2019.07.18 |