개인노트
[C언어] srand를 이용한 난수 출력 본문
rand함수를 이용하여 난수를 출력 하게되면, 그 값은 고정이 되어 난수가 아닌 의사 난수가 된다.
이러한 문제를 해결할 수 있도록 ANSI 표준에 srand라는 함수를 정의해놓았다.
srand 함수는 rand 함수와 마찬가지로 stdlib.h를 선언 해주어야 한다.
#include "stdlib.h" //srand함수 사용을 위한 선언
void srand(unsigned int seed); //인자 값으로 시드를 받는다.
#include <stdio.h> #include "stdlib.h" int main(void) { int seed, i; printf("시드 값 입력 : "); scanf_s("%d", &seed); srand(seed); for (i = 0; i < 5; i++) { printf("난수 : %d\n", rand()); }
getchar(); getchar(); } |
입력받은 시드 값에 따라 난수가 고정되지만 시드 값이 같으면 난수도 고정된다.
수동으로 시드를 입력받지 않고 난수를 출력하는 방법이 있다. 바로 컴퓨터의 시간을 시드 값으로 받는 것이다.
컴퓨터의 시간을 받는 함수는 time.h 헤더의 time 함수이다.
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i; srand((int)time(NULL)); for (i = 0; i < 5; i++) { printf("난수 : %d\n", rand()); } getchar(); getchar(); } |
'C > 문법' 카테고리의 다른 글
[C언어] 문자 단위의 입출력 함수, EOF (0) | 2017.07.13 |
---|---|
[C언어] 스트림의 의미 (0) | 2017.07.13 |
[C언어] main 함수의 인자 전달 (0) | 2017.07.07 |
[C언어] 함수 포인터 변수와 void 포인터 (0) | 2017.07.07 |
[C언어] 2차원 배열의 arr[i] = *(arr+i) 공식 (0) | 2017.07.06 |