안녕하세요 길벗수험서 운영팀입니다.
함수 정의를 먼저 정리해보죠.
rand함수는 'srand함수로 설정된 수'를 기반으로 어떠한 공식을 통해 0~32767 사이의 '특정 수'들을 나열합니다.
즉, srand함수로 설정된 수가 변하지 않고 고정되어 있다면 rand함수를 수십수백번 돌려도 동일한 수들이 나열됩니다.
아래 화면처럼 말이죠

srand함수는 rand값을 출력하는데 기준이 되는 수를 전달해주는 역할을 하죠.
time(NULL)은 현재 시간에서 1970년 1월 1일 00:00을 뺀 시간의 '초' 단위 값을 구합니다.
즉 현재 시간이 1970년 1월 2일 00:00이라면 24시간이 지났으니 24시간을 초로 환산한 86400이라는 값이 나옵니다.
----------
이제 보죠.
rand함수는 srand로 설정된 값을 기반으로 무작위 값을 뽑아냅니다.
time(null)이 프로그램을 수행하는 시간에서 1970년 1월 1일 00:00 을 뺀 '초단위' 시간을 의미하니, 이 값을 기준으로
rand함수의 값이 나열되겠네요.
따라서 srand(time(null)), rand() 는 1~32767 사이의 값을 특정 공식에 따라 초단위로 다른 값들을 나열해주게 됩니다.
단순히 말해 그냥 매초 마다 다른 유형의 무작위 값을 출력시켜주는 것이죠.
교재 97쪽의 rand()함수의 값은 그저 교재를 제작할 때 나온 rand()값을 임의로 적어넣은 것입니다.
만약 지금 그대로 다시 돌린다고 해도 srand(time(null))의 값이 달라지므로 다른 값이 나오게 되겠죠.
행복한 하루되세요 :)
-
관리자2019-06-13 10:10:41
안녕하세요 길벗수험서 운영팀입니다.
함수 정의를 먼저 정리해보죠.
rand함수는 'srand함수로 설정된 수'를 기반으로 어떠한 공식을 통해 0~32767 사이의 '특정 수'들을 나열합니다.
즉, srand함수로 설정된 수가 변하지 않고 고정되어 있다면 rand함수를 수십수백번 돌려도 동일한 수들이 나열됩니다.
아래 화면처럼 말이죠

srand함수는 rand값을 출력하는데 기준이 되는 수를 전달해주는 역할을 하죠.
time(NULL)은 현재 시간에서 1970년 1월 1일 00:00을 뺀 시간의 '초' 단위 값을 구합니다.
즉 현재 시간이 1970년 1월 2일 00:00이라면 24시간이 지났으니 24시간을 초로 환산한 86400이라는 값이 나옵니다.
----------
이제 보죠.
rand함수는 srand로 설정된 값을 기반으로 무작위 값을 뽑아냅니다.
time(null)이 프로그램을 수행하는 시간에서 1970년 1월 1일 00:00 을 뺀 '초단위' 시간을 의미하니, 이 값을 기준으로
rand함수의 값이 나열되겠네요.
따라서 srand(time(null)), rand() 는 1~32767 사이의 값을 특정 공식에 따라 초단위로 다른 값들을 나열해주게 됩니다.
단순히 말해 그냥 매초 마다 다른 유형의 무작위 값을 출력시켜주는 것이죠.
교재 97쪽의 rand()함수의 값은 그저 교재를 제작할 때 나온 rand()값을 임의로 적어넣은 것입니다.
만약 지금 그대로 다시 돌린다고 해도 srand(time(null))의 값이 달라지므로 다른 값이 나오게 되겠죠.
행복한 하루되세요 :)