Scroll to navigation

RAND(3) 리눅스 프로그래머 매뉴얼 RAND(3)

이름

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@soback.kornet.net>, 2001년 3월 9일

1995년 5월 18일 GNU