๊ฐ์
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํด ์๋ค. ์ ์ด์ ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ ๋ชฉ์ ์ด ์ฝ๊ฒ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๊ฒ ํจ์ ์๋ค.
ํ์ง๋ง ๊ฒฐ๊ตญ ํ๋ ์์ํฌ์ ์๋ฆฌ๋ฅผ ๋ชจ๋ฅธ๋ค๋ฉด ํ๋ ์์ํฌ๊ฐ ๊ฐ์ง ๊ฐ์ , ์ ์ฝ, ์ค๋ฅ์ ์์ธ์ ๋ฐ์ํ๋ค๋ฉด? ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค๋ฅ๊ฐ ๊ตฌ๊ธ๋ง์ ํด๋ ์ ๋์ค์ง ์๋๋ค๋ฉด ์ด์ฐํ ๊ฒ์ธ๊ฐ? ํ์๋ง์ผ๋ก ์์ธ์ ์ฐพ์์ผ ํ ๋ ์ปดํจํฐ ๊ณผํ ๊ธฐ์ด๊ฐ ๋น์ ๋ฐํ๋ค. ๊ฐ๋จํ ์ฌ๋ก๋ถํฐ ์์ํ์.
๋ ๋ค๋ฃจ๊ธฐ
์ ์๋ฅผ ๋ค๋ฃฐ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก int๋ฅผ ๋ง์ด ์ ํํ๊ฒ ๋๋ค.
๋๋ ๊ทธ๋ ๊ฒ ์ ํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
int์ ๋ฒ์: -2,147,483,648 ~ 2,147,483,647
int ๊ฐ์ ์์ ์ต๋์น์ธ 2,147,483,647๋ฅผ ๋๊ธฐ๊ฒ ๋๋ฉด ์ค๋ฒํ๋ก์ฐ๊ฐ ๋๋ค.
์ ์๊ฐ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์ด์งธ์ ๊ฐ์ด ๋ฒ์๋ฅผ ์ด๊ณผํ๋๋ฐ ์ด๋ฐ ๊ฐ์ด ๋ด๊ธธ๊น?
๋ณ์ํ, ๋ณ์์ ๊ฐ์ ๋ฒ์๊ฐ ๋ก์ฐ ๋ ๋ฒจ์์ ์ด๋ป๊ฒ ๋์ํ๋์ง ์๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ณ์์ ์ธ๋ํ๋ก์ฐ, ์ค๋ฒํ๋ก์ฐ๋ ์ผ์ข
์ ์์ ์ฅ์น๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ฌด๊ฒฐ์ฑ์ ์งํค๊ธฐ ์ํด์ ์์ด๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ฎ์ด์ฐ๋ ๋์ ๋์ ์ธ๋ ํ๋ก์ฐ, ์ค๋ฒ ํ๋ก์ฐ๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ํํ ๊ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ฌด๊ฒฐ์ฑ์ ํฌ๊ธฐํ๋ค๋ฉด ์ด๋ ์๊น?
๋ณ์์ ๊ฐ์ด ์ค๋ฒํ๋ก์ฐ๋ ์ธ๋ํ๋ก์ฐ๋ ๋๋ง๋ค ์ธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ค ๊ฐ์ด ์์๋์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๋ฒ๊ทธ๊ฐ ์๊ฒผ์ ๊ฒ์ด๋ค.
int64๋ฅผ ์ฐ๋ฉด ๊ด์ฐฎ์๊ฐ?
์๋ ๊ทธ๋ ์ง ์๋ค. ๊ฐ์ ๋ฒ์๊ฐ ์ปค์ง๋ ๊ฒ์ผ ๋ฟ ์ค๋ฒํ๋ก์ฐ ์ด์๋ ์กด์ฌํ๋ค. ์ฐ์ ์ค๋ฒํ๋ก์ฐ๊ฐ ์ผ์ด๋ฌ๋์ง ์ฒดํฌํ๋ ๊ฒ์ ์๋์ ์ผ๋ก ์ฝ๋ค. ์ด ์ํฉ์์ ์ด๋ป๊ฒ ํด์ผ ๋ ๊น?
- ๊ฐ์ ๋ ํฌ๊ฒ ๋ด๊ธฐ ์ํด์ ๋๋ ํฐ ํ์
์ ์ฌ์ฉ?
- ๋ฌธ์์ด์ ์ด์ฉํด ๋ฒ์๊ฐ ๋ ํฐ ์ฐ์ฐ?
- unsigned ํ์
์ด์ฉ์ผ๋ก 2๋ฐฐ์ ๋ฒ์ ํ์ฅ?
- ์ค๋ฒํ๋ก์ฐ์์๋ ์์ธ๋ฅผ ๋ฐ์์ํค๊ธฐ?
์ด ๋ชจ๋ ํ๋จ์ ํ๊ธฐ ์ํด์ ์ค๋ฒํ๋ก์ฐ๋ผ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์์ ์ธ์งํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฒํ๋ก์ฐ๋ก ์ธํด ๊ฐ์ด ์ด๋ป๊ฒ ๋ณํ๊ณ ๋ง๊ฐ์ง๋๊ฐ๋ฅผ ์์์ผ ๊ฐ๋ฅํ๋ค.
๋ฏธ๊ตญ์ ๋ ๋ค๋ฃจ๊ธฐ, ์ผํธ ํ๊ธฐ๋ฅผ ์ํด float, double๋ฅผ ์ฐ๊ฒ ๋ค๊ณ ?
ํ๊ตญ์ ์์ ์ต์ ๋จ์๊ฐ 1์ด๋ค. ์ ์ํ์ ์ฐ๊ธฐ ๋ฑ ์ข๋ค. ๋ฐ๋ฉด ๋ฏธ๊ตญ์ ์ผํธ๊ฐ ์กด์ฌํ๋ค. 50์ผํธ๋ 0.5๋ก ํ๊ธฐํ๊ณ ์ถ์ด์ง๋ค. ์ ์ ๋์ ์ค์๋ฅผ ์จ๋ณผ๊น? ์ค์๋ฅผ ์ฐ๋ ์๊ฐ ๋ถ๋ ์์์ ์ค์๊ฐ ์ด๋ค ๊ฒ์ธ์ง ์ ๋ชฐ๋๋ค๋ฉด ์ด๋ก ์ธํ ๊ฐ ์ ์ค๋ก ์ธํด ์ค๋ฅ๋ฅผ ๋ง๋ค๊ฒ ๋ ๊ฒ์ด๋ค.
NaN
๋ถ๋ ์์์ ์ค์๊ฐ ๋ด์ ์ ์๋ ๊ฐ์ ๊ฒฝ์ฐ Not a Number๋ผ๋ ๋ป์ NaN์ด ๋ด๊ฒจ ์๊ฒ ๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ ์๊ธธ๊น?
๋์๋ ๊ฐ์ ๋ถํฌ๋ฅผ ํญ์ ๋ณด์ฅํ์ง ์๋๋ค.
์์์ ๊ฐ์ ์ํ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๊ฐ ์ธ์ด์ ๊ธฐ๋ณธ Random ํจ์๋ฅผ ํธ์ถํ๋ค.
ํ์ง๋ง ์ด Random ํจ์๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์์ ๊ฐ์ ์ ์ ํ ๋ถํฌ๋ก ๋ฐ์์ํค์ง ์๋๋ค.
0~9999์ ๊ฐ์ ์ํ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ ๊ฐ์ ๋๋จธ์ง ์ฐ์ฐ (%)์ผ๋ก 10000์ ์ํํ๋ ๋ฐ ์ฌ๊ธฐ์ ๋์ค๋ ๊ฒฐ๊ณผ ๊ฐ์ด 0~9999๊น์ง์ ๊ฐ์ด 1๋ฒ์ฉ ๋ฐ์ํจ์ ๋ณด์ฅํ์ง ์๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ฐ์์ผ๋ก 9999, 9998์ด ๋์ฌ ์ฌ์ง๋ ๋ถ๋ช
ํ ์กด์ฌํ๋ค.
์ด๋ฌํ ๋ถํฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด์๋ MersenneTwister (Apache Commons Math 3.6.1 API) ๋ฅผ ์ด์ฉํ ๋๋ค ๊ธฐ๋ฅ์ ์จ์ผ ํ๋ค. (๋
ผ๋ฌธ์ Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator: ACM Transactions on Modeling and Computer Simulation: Vol 8, No 1 ๋ค์๊ณผ ๊ฐ๋ค) ์์ธํ ์ดํด๋ณด๋ฉด ๋จ์ ์ด ์๋ ๊ฒ์ ์๋๋ฐ ๋น์ฐํ๊ฒ๋ ๋ ์ ๋ฐํด์ง๋ฉด ๋ ๋๋ ค์ง๋ค.
์ปดํจํฐ ๊ณผํ์ ๊ธฐ๋ณธ์ ํธ๋ ์ด๋ ์คํ๋ค. ๋ชจ๋ ๊ฒ์ด ์ข์์ง ๋ฐ์ ์ด ์๋ ๊ฒ์ ์๋๋ฐ, ๋๋ถ๋ถ์ ํธ๋ ์ด๋ ์คํ์ด๊ธฐ ๋๋ฌธ์ ์ฅ๋จ์ ์ ํ์
ํ๊ณ ๋จ์ ์ ์์ฉ ๊ฐ๋ฅํ ๋ฒ์ฃผ์ธ์ง, ๊ฐ๋ดํ๊ณ ๋ผ๋ ์ด๋์ ์ป์ด์ผ ๋๋์ง๋ฅผ ์ดํดํ๊ณ ์๋์ง๊ฐ ์ค์ํ๋ค.