난수 생성 함수 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;
}

 rand01.png

 

위의 결과처럼 실행때 마다 같은 난수가 반복된다.

매번 다른 난수를 생성하기 위해서는 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;
}

 

rand02.png

 

rand() 함수는 매번 실행 때마다 같은 난수를 생성하고, seed 값을 가지는 srand() 함수는 실행때마다 다른 난수를 생성한다.