티스토리 뷰

ETC/종합

난수 함수 (rand, srand)

BAEKNAMU 2015. 7. 3. 17:08

 

rand

<stdlib.h>에 포함되어 있음.

원형 : int rand(void);

함수 리턴값 : int 형으로 값을 리턴.

*0~32767 의 범위 중 무작위 수를 추출하여 값을 리턴해줌.

seed 값에 따라 발생하는 난수의 값이 결정됨.

 

컴퓨터는 100% 임의 수가 없음.

 

ex)

int a=0;

a= rand();

printf("%d \n", a);

 

출력값 :  

 41

 

seed값이 변경되지 않으면 실행할때마다 seed값이 고정이기 때문에

첫번째 난수는 항상 41이 출력된다.

제대로 난수를 정하고 싶다면 seed 값을 랜덤하게 넣어줘야 한다.

 

srand 함수

<stdlib.h>에 포함되어 있음.

원형: void srand(unsigned int seed);

(양수를 입력하면 seed 값을 변경해줌.)

난수에 발생되는 seed 값을 지정해줌.

 

ex)

#include<stdio.h>
#include<stdlib.h>

int main(){

int a =0 ;
srand(50);
a=rand();
printf("%d\n",a);

return 0;

}

출력값 :

 201

 

 ※ seed 값을 50으로 고정했기 때문에 201도 실행될때마다 반복되서 첫번째 출력이 나오겠다.

때문에 seed 값은 고정된 값이 되면 안되겠다.

 

고정된 값이 아닌 값을 정해줄때는

time() 함수를 이용하면 되겠다.

시간은 계속 변하니까...

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){

int a =0 ;
srand(time(0)); // 0값
a=rand();
printf("%d\n",a);
return 0;

}

 

 초당 값으로 계산하기 때문에

1초당 seed값이 같아 1초동안은 같은 값이 나오고

1초가 지난후에야 다른값이 나오는 것을 확인 할 수 있다.

 

 

 

 

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday