drand48(3) - wariua/manpages-ko GitHub Wiki

NAME

drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - κ· μΌν•˜κ²Œ λΆ„ν¬ν•˜λŠ” μœ μ‚¬ λ‚œμˆ˜ μƒμ„±ν•˜κΈ°

SYNOPSIS

#include <stdlib.h>

double drand48(void);

double erand48(unsigned short xsubi[3]);

long int lrand48(void);

long int nrand48(unsigned short xsubi[3]);

long int mrand48(void);

long int jrand48(unsigned short xsubi[3]);

void srand48(long int seedval);

unsigned short *seed48(unsigned short seed16v[3]);

void lcong48(unsigned short param[7]);

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

μœ„ ν•¨μˆ˜λ“€ λͺ¨λ‘:
_XOPEN_SOURCE
|| /* glibc 2.19λΆ€ν„°: */ _DEFAULT_SOURCE
|| /* glibc 버전 <= 2.19: */ _SVID_SOURCE

DESCRIPTION

이 ν•¨μˆ˜λ“€μ€ μ„ ν˜• 합동 μ•Œκ³ λ¦¬λ“¬κ³Ό 48λΉ„νŠΈ μ •μˆ˜ 연산을 μ΄μš©ν•΄ μœ μ‚¬ λ‚œμˆ˜λ₯Ό μƒμ„±ν•œλ‹€.

drand48() 및 erand48() ν•¨μˆ˜λŠ” [0.0, 1.0) ꡬ간에 κ· μΌν•˜κ²Œ λΆ„ν¬ν•˜λŠ” 음수 μ•„λ‹Œ 배정밀도 λΆ€λ™μ†Œμˆ˜μ  값을 λ°˜ν™˜ν•œλ‹€.

lrand48() 및 nrand48() ν•¨μˆ˜λŠ” [0, 2^31) ꡬ간에 κ· μΌν•˜κ²Œ λΆ„ν¬ν•˜λŠ” 음수 μ•„λ‹Œ κΈ΄ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•œλ‹€.

mrand48() 및 jrand48() ν•¨μˆ˜λŠ” [-2^31, 2^31) ꡬ간에 κ· μΌν•˜κ²Œ λΆ„ν¬ν•˜λŠ” λΆ€ν˜Έ μžˆλŠ” κΈ΄ μ •λΆ€λ₯Ό λ°˜ν™˜ν•œλ‹€.

srand48(), seed48(), lcong48() ν•¨μˆ˜λŠ” μ΄ˆκΈ°ν™” ν•¨μˆ˜μ΄λ©° drand48(), lrand48(), mrand48() μ‚¬μš© 전에 ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€. erand48(), nrand48(), jrand48() ν•¨μˆ˜μ—λŠ” μ΄ˆκΈ°ν™” ν•¨μˆ˜λ₯Ό λ¨Όμ € ν˜ΈμΆœν•  ν•„μš”κ°€ μ—†λ‹€.

λͺ¨λ“  ν•¨μˆ˜λ“€μ€ λ‹€μŒ μ„ ν˜• 합동 식에 따라 48λΉ„νŠΈ μ •μˆ˜ Xi의 열을 μƒμ„±ν•˜μ—¬ λ™μž‘ν•œλ‹€.

Xn+1 = (aXn + c) mod m, μ—¬κΈ°μ„œ n >= 0

λ§€κ°œλ³€μˆ˜ m = 2^48이며, κ·Έλž˜μ„œ 48λΉ„νŠΈ μ •μˆ˜ 연산을 μˆ˜ν–‰ν•œλ‹€. lcong48()을 ν˜ΈμΆœν•œ κ²½μš°κ°€ μ•„λ‹ˆλ©΄ a와 c에 λ‹€μŒ 값을 μ€€λ‹€.

a = 0x5DEECE66D
c = 0xB

ν•¨μˆ˜ drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48() 쀑 λ­”κ°€λ‘œ λ°˜ν™˜ν•˜λŠ” κ°’μ˜ 계산은 λ¨Όμ € μ—΄μ˜ λ‹€μŒ 48λΉ„νŠΈ Xiλ₯Ό μƒμ„±ν•˜λŠ” κ²ƒμœΌλ‘œ 이뀄진닀. κ·ΈλŸ¬κ³ μ„œ λ°˜ν™˜ν•  데이터 ν•­λͺ©μ˜ νƒ€μž…μ— 따라 μ μ ˆν•œ 수의 λΉ„νŠΈλ₯Ό Xi의 μƒμœ„ λΉ„νŠΈλ“€λ‘œλΆ€ν„° λ³΅μ‚¬ν•˜κ³  이λ₯Ό λ°˜ν™˜ κ°’μœΌλ‘œ λ³€ν™˜ν•œλ‹€.

drand48(), lrand48(), mrand48() ν•¨μˆ˜μ—μ„œλŠ” λ§ˆμ§€λ§‰μœΌλ‘œ μƒμ„±ν•œ 48λΉ„νŠΈ Xiλ₯Ό λ‚΄λΆ€ 버퍼에 μ €μž₯ν•΄ λ‘”λ‹€. erand48(), nrand48(), jrand48() ν•¨μˆ˜μ—μ„œλŠ” μ—°μ†λ˜λŠ” Xi 값을 μœ„ν•œ μ €μž₯ 곡간을 호좜 ν”„λ‘œκ·Έλž¨μ΄ xsubi λ°°μ—΄ 인자둜 μ œκ³΅ν•΄μ•Ό ν•œλ‹€. 처음 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ° 전에 κ·Έ 배열에 Xi의 μ΄ˆκΈ°κ°’μ„ λ„£μ–΄μ„œ κ·Έ ν•¨μˆ˜λ“€μ„ μ΄ˆκΈ°ν™” ν•œλ‹€.

μ΄ˆκΈ°ν™” ν•¨μˆ˜ srand48()은 Xi의 μƒμœ„ 32λΉ„νŠΈλ₯Ό 인자 seedval둜 μ„€μ •ν•œλ‹€. ν•˜μœ„ 16λΉ„νŠΈλŠ” μž„μ˜λ‘œ μ •ν•œ 0x330E κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€.

μ΄ˆκΈ°ν™” ν•¨μˆ˜ seed48()은 Xi의 값을 λ°°μ—΄ 인자 seed16v에 μ§€μ •λœ 48λΉ„νŠΈ κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€. Xi의 이전 값이 μ–΄λ–€ λ‚΄λΆ€ λ²„νΌλ‘œ λ³΅μ‚¬λ˜κ³  이 버퍼에 λŒ€ν•œ 포인터λ₯Ό seed48()이 λ°˜ν™˜ν•œλ‹€.

μ΄ˆκΈ°ν™” ν•¨μˆ˜ lcong48()은 μ‚¬μš©μžκ°€ Xi, a, c의 μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•  수 있게 ν•΄ μ€€λ‹€. λ°°μ—΄ 인자의 param[0-2] ν•­λͺ©λ“€μ΄ Xiλ₯Ό μ§€μ •ν•˜κ³ , param[3-5]κ°€ aλ₯Ό μ§€μ •ν•˜κ³ , param[6]이 cλ₯Ό μ§€μ •ν•œλ‹€. lcong48()을 ν˜ΈμΆœν•œ λ‹€μŒμ— srand48()μ΄λ‚˜ seed48()을 ν˜ΈμΆœν•˜λ©΄ a와 c의 ν‘œμ€€ 값이 λ‹€μ‹œ μ‚΄μ•„λ‚˜κ²Œ λœλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
drand48(), erand48(),
lrand48(), nrand48(),
mrand48(), jrand48(),
srand48(), seed48(),
lcong48()
μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Unsafe race:drand48

μœ„ ν•¨μˆ˜λ“€μ€ λ‚œμˆ˜ 생성기λ₯Ό μœ„ν•œ μ „μ—­ μƒνƒœ 정보λ₯Ό κΈ°λ‘ν•˜λ©°, λ”°λΌμ„œ μŠ€λ ˆλ“œ μ•ˆμ „ν•˜μ§€ μ•Šλ‹€.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, SVr4.

SEE ALSO

rand(3), random(3)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️