336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
2. C언어 기초
4) 난수(Random Number)
▣ rand 함수
- 함수 원형 : int rand(void);
- 0 ~ 32767의 범위 중 무작위 수를 추출
- seed값에 따라 발생하는 난수의 값이 결정
▣ srand 함수
- 함수 원형 : void srand(unsigned int seed);
- 난수에 발생되는 seed값을 지정
- srand함수를 쓰지않으면 디폴트 seed값은 1
=> 두 함수 모두 stdlib.h 헤더파일에 선언되어 있음.
#include <stdio.h> #include <stdlib.h> int main() { printf("rand() = %d\n", rand()); printf("rand() = %d\n", rand()); printf("rand() = %d\n", rand()); return 0; }
- 실행 결과
☞ seed값이 디폴트 값인 1임.
☞ seed값의 변화가 없으니 여러번 실행해도 다 똑같은 수들이 반복되어 나옴.
▣ 시간값을 사용하여 완벽한 난수 생성
- 컴퓨터 내에서 유지되지 않고 계속되어 바뀌는 정보는 시간정보임.
- 이 시간값을 seed값으로 사용한다면 여러번 실행해도 바뀌는 값이기에 반복되지 않는 완벽한 난수가 생성됨.
- time 함수는 time.h에 선언되어 있음
☞ srand((unsigned) time(NULL));
- BUT! 시간 또한 일정하게 증가하기 때문에 첫번째 rand()값도 일정하게 증가함..
☞ 첫번째 rand()값을 버리거나 time(0) 말고 다른 값을 사용하면 해결.
▣ 원하는 범위의 난수 추출
- rand() % ((마지막값 - 시작값) + 1) + 시작값
- ex) 20 ~ 35까지의 랜덤 수 : rand() % ((35 - 20) + 1) + 20
i2sec 대구지점 23기 수료생.
'해킹&보안 > C언어' 카테고리의 다른 글
[D+14] C언어 기초 (7) (0) | 2017.02.26 |
---|---|
[D+13] C언어 기초 (6) (0) | 2017.02.23 |
[D+10] C언어 기초 (4) (0) | 2017.02.20 |
[D+9] C언어 기초 (3) (0) | 2017.02.17 |
[D+8] C언어 기초 (2) (0) | 2017.02.16 |