티스토리 뷰
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초가 지난후에야 다른값이 나오는 것을 확인 할 수 있다.
'ETC > 종합' 카테고리의 다른 글
스테가노그래피 data추출 (0) | 2015.07.10 |
---|---|
지역변수 stack, 전역 변수 data (0) | 2015.07.03 |
기초 문법( break, continue) (0) | 2015.07.01 |
기초 문법(while, do while, for, switch~ case) (0) | 2015.07.01 |
기초 연산자연습(sizeof 연산자) (0) | 2015.07.01 |