학교 과제 풀다가 의문이 들어서 묻는건데


이 함수를 걍 main() 안에서 쓸 때는 잘 작동해. 문제는 이 함수가 다른 함수에서 쓰이고 이 함수를 main()에서 여러번 호출할 때야.


이때는 rand() 함수의 리턴값이 맨 처음 이후로는 난수가 아니게 되어버려.


무슨 소리나면 첫 숫자는 아무도 예상할 수 없으니 난수가 맞음.


그런데 두 번째 숫자부터는 첫 숫자를 초항으로 하는 등차수열(사실 완전한 등차수열은 아니지만)로 숫자가 나온다는거야.


만약 첫 숫자가 67이 나왔다면 67, 70, 73, 76, 79... 이따구로 숫자가 나온다는거야.


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <windows.h>


int randomNumber(void){

srand(time(NULL));

return rand();

}


int main(void){

while(1){

printf("%d ", randomNumber());

Sleep(1000);

}

return 0;

}


테스트를 위해 만들어본 1초 간격으로 난수를 하나 생성해 출력하는 코드야.


일부러 14번째 printf 함수의 인자로 그냥 rand()를 쓰지 않고 main()함수 밖에 randomNumber()라는 함수를 하나 더 만들어서 인자로 넘겨줬음.


실제로 실행해본 결과는 이래.




이거 왜 그러는거냐?? 다른 해결방법은 있음?? 컴파일러는 gcc 4.9.2 버전 사용중임. 검색해보니까 관련 정보가 없어서 프갤에 질문해봄.