RAND48(3)

명칭
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - 유사 난수 제네레이터와 초기화 routine

프로그램 라이브러리
libc

서식
<stdlib.h> double drand48(void) double erand48(unsigned short xseed[3]) long lrand48(void) long nrand48(unsigned short xseed[3]) long mrand48(void) long jrand48(unsigned short xseed[3]) void srand48(long seed) unsigned short * seed48(unsigned short xseed[3]) void lcong48(unsigned short p[7])

해설
rand48() 패밀리의 함수는, 사이즈가 48비트의 정수로 동작하는, 일차적으로 일치했다 알고리즘을 사용해 유사 난수를 작성합니다. 채용되고 있는 공식은 r(n+1) = (a * r(n) + c) mod m 그리고, 피승수 a 의 기본값은 0xfdeece66d = 25214903917, 가수 c 의 데포 르트치는 0xb = 11 입니다. 법 m 는, 항상 2 ** 48 에 고정되고 있습니다. r(n) (은)는, 난수 제네레이터의 종을 호출합니다.

이하로 설명하는 6개의 제네레이터 routine에서는, 최초의 연산 스텝에서 알 고리즘이 1회 실행됩니다.

drand48() (와)과 erand48() (은)는, 더블 타입의 값을 되돌립니다. r(n+1)의 48비트 전체는 반환값의 가수에 로드 되어 지수는 작성된 값이 구간[0.0, 1.0)에 존재하도록(듯이) 설정되고

lrand48() (와)과 nrand48() (은)는, 범위[0, 2**31-1]그리고 롱 타입의 값을 되돌립니다. r(n+1)의 상위(31) 빅 트는 반환값의 하위 비트에 로드 되어 최상정도(부호) 비트는 0으로 설정됩니다.

mrand48() (와)과 jrand48() (은)는, 범위[-2**31, 2**31-1]그리고 롱 타입의 값을 되돌립니다. r(n+1)의 상위 (32) 비트는, 반환값에 로드 됩니다.

drand48(), lrand48(), mrand48(), (은)는, 내부 버퍼를 사용해 r(n)를 보존합니다. 이 함수에서는, r(0)의 처음 기치가 0x1234abcd330e = 20017429951246 이 되어 있습니다.

erand48(), nrand48(), jrand48() (은)는, 유저가 지정한 버퍼를 사용해 r(n)를 보존합니다. 이 버퍼 (은)는 3살의 쇼트로부터 구성되어 있어 0번째의 멤버에는 최하정도 비트가 입

모든 함수는, 같은 피승수와 가수를 공유합니다.

srand48() (은)는, 종의 값의 32비트를 r(n)의 상위 32비트에 카피해, r(n)의 하위 16 비트를 0x330e 로 설정해, drand48(), lrand48(), mrand48() 의 내부 버퍼 r(n)를 초기화합니다. 알고리즘의 정피승수와 가수는, 위 기의 기본값에 리셋트 됩니다.

seed48() 도 drand48(), lrand48(), mrand48() 의 내부 버퍼 r(n)를 초기화합니다만, 종의 48비트 전체가 3살의 쇼 트의 배열로 지정되어 0번째의 멤버는 최하정도 비트를 지정합니다. 아르고리 즘의 정피승수와 가수는, 상기의 기본값에 리셋트 됩니다. seed48() (은)는, 낡은 종을 포함한, 3살의 쇼트의 배열을 가리키는 포인터를 되돌립니다. 이 배 열은 정적으로 할당해지기 (위해)때문에, seed48() (을)를 호출할 때마다 내용은 없어집니다.

lcong48() 그럼, drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48() 그리고 사용되는 피승수와 가수, 및 drand48(), lrand48(), mrand48() 그리고 사용되는 종을 완전하게 제어할 수 있습니다. 파라미터로서는, 7살의 쇼트 의 배열이 건네받습니다. 최초의 3살의 쇼트는 종의 초기화에, 다음의 3개는 피승 수의 초기화에, 마지막 쇼트는 가수의 초기화에 사용됩니다. 이 때문에, 0xffff 보다 큰 값을 가수로서 사용할 수 없습니다.

난수 제네레이터의 종을 재배하는 3개(살) 모든 수법은, 6개의 제네레이터의 불러 방편용으로 피승수와 가수를 항상 설정하는 것에 주의해 주세요.

보다 강력한 난수 제네레이터가 필요한 경우는, random(3) (을)를 사용해 주세요.

저자
Martin Birgmeier

관련 항목
rand(3), random(3)