Manpages

이 름

rand, srand − random 수 생 성 기 .

사 용 법

#include <stdlib.h>

int rand(void);

void srand(unsigned int seed);

설 명

rand() 함 수 는 0과 RAND_MAX사 이 의 pseudo-random 정 수 를 리 턴 한 다 .

srand() 함 수 는 인 자 를 rand()가 리 턴 하 는 pseudo-random 정 수 의 새 로 운 연 속 된 수 들 을 위 한 종 자 로 설 정 한 다 . 이 들 연 속 된 수 들 은 같 은 seed 값 으 로 srand()를 호 출 하 여 반 복 된 다 .

만 일 어 떤 seed 값 도 제 공 되 지 않 는 다 면 , rand() 함 수 는 자 동 적 으 로 1 값 으 로 종 자 가 된 다 .

반 환 값

rand() 함 수 는 0과 RAND_MAX사 이 의 값 을 반 환 한 다 . srand()는 어 떤 값 도 반 환 하 지 않 는 다 .

주 의

Linux C 라 이 브 러 리 의 rand()srand() 버 전 은 random()srandom()처 럼 같 은 random 수 생 성 기 를 사 용 한 다 . 그 래 서 lower-order bit 들 은 higher-order bit들 만 큼 랜 덤 하 다 . 그 러 나 , 예 전 rand() 작 동 에 서 , lower-order bit들 은 higher-order bit들 보 다 덜 랜 덤 했 다 .

Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 1990 (1st ed, p. 207))에 , 다 음 과 같 은 주 석 이 있 다 :

"If you want to generate a random integer between 1 and 10, you should always do it by

j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

and never by anything resembling

j=1+((int) (1000000.0*rand()) % 10);

(which uses lower-order bits)."

Random-number 생 성 은 매 우 복 잡 한 주 제 이 다 . Numerical Recipes in C 책 (위 에 언 급 한 )은 Chapter 7 (Random Numbers)에 서 random-number 생 성 에 관 한 실 제 적 인 훌 륭 한 토 론 을 제 공 한 다 .

더 이 론 적 인 토 론 을 원 하 면 , 깊 이 있 게 많 은 실 제 적 인 이 슈 를 다 루 고 있 는 Donald E. Knuth의 The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd 판 의 Chapter 3 (Random Numbers)를 참 고 해 라 .; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.

호 환

SVID 3, BSD 4.3, ISO 9899

관 련 항 목

random(3), srandom(3), initstate(3), setstate(3)

역 자

정 강 훈 <skyeyes [AT] soback.net>, 2001년 3월 9일