λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
ν”„λ‘œκ·Έλž˜λ°

μ˜μ‚¬λ‚œμˆ˜ Pseudo-Random Number

by 𝓃𝒢𝓃𝒢q 2015. 3. 3.

λ‚œμˆ˜ Random Number

 

μ•„λ¬΄λŸ° κ·œμΉ™ 없이 λ¬΄μž‘μœ„λ‘œ μΆœν˜„ν•˜λŠ” μž„μ˜μ˜ 수, 예츑 λΆˆκ°€λŠ₯ν•œ 수

μ‚¬λžŒμ˜ μœ‘κ°μ΄λ‚˜ 착상과 λΉ„μŠ·ν•œ 사고λ₯Ό ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” ν•˜λ‚˜μ˜ 방법

정이십면체 ν˜•νƒœμ˜ λ‚œμˆ˜ μ£Όμ‚¬μœ„λ₯Ό 던져 μž„μ˜μ˜ 숫자λ₯Ό 얻을 수 μžˆλ‹€.

 

 


μ˜μ‚¬ λ‚œμˆ˜ Pseudo-Random Number

 

ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ‚œμˆ˜λ₯Ό μƒμ„±ν•˜λŠ” 식을 μ‚¬μš©ν•΄μ„œ 연관성이 μ—†λŠ” λ“―ν•œ μˆ˜μ—΄μ„ 생성.

μ§„μ •ν•œ λ‚œμˆ˜κ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ˜μ‚¬(Pseudo) λ‚œμˆ˜λΌκ³  ν•œλ‹€.


1. μ΄ˆκΈ°κ°’(Seed)μ—μ„œ 좜발

2. νŠΉμ • 곡식을 톡해 수 생성

3. κ·Έ 수λ₯Ό λ‹€μ‹œ μ΄ˆκΈ°κ°’μœΌλ‘œ 지정


일반적으둜 μ„ ν˜• 합동법(Linear Congruential Generator, LCG) μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•œ λ‚œμˆ˜ 생성을 많이 μ΄μš©ν•œλ‹€.

C μ–Έμ–΄μ˜ 경우 일반적으둜 μ‚¬μš©ν•˜λŠ” stblib.h 에 ν¬ν•¨λ˜μ–΄μžˆλŠ” srand(), rand() ν•¨μˆ˜ 등이 이둜 κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€.

 


μž₯점: 계산 곡식이 κ°„λ‹¨ν•˜μ—¬ λΉ λ₯΄κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš°λ©°, 적은 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•œλ‹€.

단점: λ‚œμˆ˜ 반볡 μ£ΌκΈ°κ°€ ν•΄λ‹Ή μ»΄ν“¨ν„°μ—μ„œ μ—°μ‚° κ°€λŠ₯ν•œ μ΅œλŒ€ λ³€μˆ˜κ°€ λœλ‹€. (64bit 머신일 경우 264)

  1μ°¨μ›μ—μ„œλŠ” λ‚œμˆ˜ 뢄포가 κ· μΌν•˜μ§€λ§Œ n차원 μƒμ—μ„œλŠ” κ· μΌν•˜μ§€ μ•Šμ•„ νŒ¨ν„΄μ΄ λ°œμƒν•˜κ²Œ λœλ‹€. (μ•„λž˜ κ·Έλ¦Ό[각주:1] μ°Έμ‘°)


 

Lcg_3d.gif


 

 


λ©”λ₯΄μ„Ό νŠΈμœ„μŠ€ν„° Mersenne Twister

 

1997λ…„, Makoto Matsumoto와 Takuji Nishimura에 μ˜ν•΄ λ§Œλ“€μ–΄μ§„ μ˜μ‚¬ λ‚œμˆ˜ 생성 μ•Œκ³ λ¦¬μ¦˜.

λ‚œμˆ˜μ˜ 반볡 μ£ΌκΈ°κ°€ λ©”λ₯΄μ„Ό μ†Œμˆ˜(Mersenne Prime)둜 이루어진닀.

 

Mersenne Number

 

 

Mersenne Prime

 

λ©”λ₯΄μ„Ό 수 쀑 μ†Œμˆ˜μΈ 수 (3, 7, 31, 127, 8191, 131071, 524287, …)

 

β‘  μ΄ν•­κ³„μˆ˜μ˜ ν•©

 

β‘‘ μ§€μˆ˜κ°€ ν™€μˆ˜μ†Œμˆ˜ = p 이면 μ†ŒμΈμˆ˜ ν˜•νƒœ 2pk + 1둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

 

 

주둜 μ£ΌκΈ°κ°€ 219937-1 인 MT19937(32bit) μ‚¬μš©. (for 64bit, MT19937-64)

623μ°¨μ›κΉŒμ§€ λ™μΌλΆ„ν¬μœ¨μ„ μœ μ§€ν•˜λ©° (νŒ¨ν„΄μ΄ μƒμ„±λ˜μ§€ μ•ŠμœΌλ©°) λΉ„νŠΈμ—°μ‚°λ§ŒμœΌλ‘œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•΄ 속도가 빠름.

적어도 624개의 숫자λ₯Ό μ €μž₯ν•  수 μžˆλŠ” 곡간이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— μš©λŸ‰μ€ 큰 νŽΈμ΄λ‹€.

μƒμ„±λ˜λŠ” λ‚œμˆ˜μ˜ ν’ˆμ§ˆμ€ μ’‹μ§€λ§Œ μ•”ν˜Έν•™μ μœΌλ‘œ μ•ˆμ „ν•œ 것은 μ•„λ‹ˆλ‹€. λ‚œμˆ˜μ˜ μ£ΌκΈ° 및 λ²”μœ„λ₯Ό μ•Œκ³  μžˆμ„ λ•Œ μœ ν•œν•œ 수의 λ‚œμˆ˜λ§ŒμœΌλ‘œ ν˜„μž¬μƒνƒœ 및 κ·Έ 뒀에 λ‚˜μ˜¬ λ‚œμˆ˜κ°€ 예츑 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έ.

 

 

 

  1. http://p7kell.wikidot.com/random-number [본문으둜]