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