강좌 & 팁
난수 생성 함수 rand()
c 언어에서 임의의 수를 생성할 때는 난수 생성함수 rand()를 이용한다. rand() 함수는 <stdlib.h>에 선언되어 있으며 함수의 원형은
int rand(void);
이며 다음의 예제를 보자
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
for (i = 0; i < 5; i++)
{
printf( "[%d] = %d\n", i, (rand() % 1000));
}
return 0;
}
위의 결과처럼 실행때 마다 같은 난수가 반복된다.
매번 다른 난수를 생성하기 위해서는 srand() 함수를 사용하며
void srand(unsigned int seed);
seed 값을 주는 방법으로 매번 다른 난수를 생성할 수 있다.
다음 예제를 보자
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int i;
long seed;
for (i = 0; i < 5; i++)
{
printf( "%5d", (rand()% 1000));
}
printf("\n");
seed = time(NULL);
srand(seed)
printf (" use seed value\n);
for (i = 0; i < 5; i++)
{
printf( "%5d", (rand()% 1000));
}
printf("\n");
return 0;
}
rand() 함수는 매번 실행 때마다 같은 난수를 생성하고, seed 값을 가지는 srand() 함수는 실행때마다 다른 난수를 생성한다.
srand() 함수는 seed 값에 따라서 다른 결과값은 내놓는 건가요?
seed값이 같으면 내놓는 값도 같을까요?