drand48(3) - wariua/manpages-ko GitHub Wiki
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - κ· μΌνκ² λΆν¬νλ μ μ¬ λμ μμ±νκΈ°
#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
μ΄ ν¨μλ€μ μ ν ν©λ μκ³ λ¦¬λ¬κ³Ό 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(7)λ₯Ό 보λΌ.
| μΈν°νμ΄μ€ | μμ± | κ° |
|---|---|---|
drand48(), erand48(),lrand48(), nrand48(),mrand48(), jrand48(),srand48(), seed48(),lcong48()
|
μ€λ λ μμ μ± | MT-Unsafe race:drand48 |
μ ν¨μλ€μ λμ μμ±κΈ°λ₯Ό μν μ μ μν μ 보λ₯Ό κΈ°λ‘νλ©°, λ°λΌμ μ€λ λ μμ νμ§ μλ€.
POSIX.1-2001, POSIX.1-2008, SVr4.
2017-09-15