(1) Math.random() v.s. Random
About
Javaμμ λμλ₯Ό λ°μμμΌλ³΄μ. μ μΌ μ¬μ΄ λ κ°μ§ λ°©λ²μ΄ μλ€.
java.lang.Math
μ static λ©μλrandom()
java.util.Random
ν΄λμ€
μ¬κΈ°μ λ°μλλ λμλ₯Ό μμ¬λμ(Pseudorandom Number)λΌκ³ νλλ°, λμλ μλμ§λ§ λμλ‘ μ·¨κΈμ΄ κ°λ₯ν μμ΄μ μ§μΉνλ€.
Note: λμλ₯Ό λ°μμν€λ €λ©΄ μ΄κΈ° seed κ°μ΄ νμνλ©°, ν΄λΉ seedλ₯Ό κΈ°μ€μΌλ‘ λμλ₯Ό λ°μμν¨λ€. λμΌν seedλ‘ λμλ₯Ό μμ±νλ©΄ λ€μμ μ€νν λλ λκ°μ λμκ° μμ±λλ€.
java.lang.Math.random()
Math
λ java.lang
ν¨ν€μ§μ μν΄ μμ΄ λ³λλ‘ importν νμκ° μλ€.
Math.random()
λ₯Ό νΈμΆνλ κ²μΌλ‘ λμλ₯Ό μμ±ν μ μμΌλ©°, νμ¬ μκ°μ seedλ‘ μ¬μ©νλ€.
λ²μλ 0.0 β€ Math.random() < 1.0
μ΄λ€.
μ μ λ§λ€κΈ°
μ μ νμ μ λμκ° νμν λλ μλ€.
μλ₯Ό λ€μ΄ 0 μ΄μ 9 μ΄νμ λμκ° νμνλ€λ©΄ 10μ κ³±ν΄μ£Όκ³ int
νμ
μΌλ‘ νλ³ννλ©΄ λλ€.
java.util.Random ν΄λμ€
Random
ν΄λμ€λ java.util
ν¨ν€μ§μ μν΄μμΌλ―λ‘ importν΄μΌνλ€.
Math.random()
κ³Ό λ¬λ¦¬ λ¨Όμ Random
κ°μ²΄λ₯Ό μμ±ν΄μΌ νλ€.seedλ₯Ό μ€μ ν μλ μλ€. μμ±μμ seedλ₯Ό μ λ¬νκ±°λ,
setSeed()
λ©μλλ‘ μ€μ ν μ μλ€.λ€μν λμ λ°μ λ©μλλ₯Ό μ§μνλ€.
nextBoolean()
,nextInt()
,nextLong()
,nextInt(int n)
,nextFloat()
,nextDouble()
,nextGaussian()
κ·ΈλΌ λ μ¨μΌλ κΉ?
Stack Overflowμ ν κΈμ λ°λ₯΄λ©΄ Random.nextInt(n)
κ° Math.random() * n
λ³΄λ€ λ ν¨μ¨μ μ΄κ³ λ νΈν₯μ (biased)μ΄λΌκ³ νλ€.
Math.random()
μ λ΄λΆμ μΌλ‘Random.nextDouble()
μ μ¬μ©νλ€.Random.nextDouble()
μRandom.next()
ν¨μλ₯Ό λ λ² νΈμΆν΄μ κ°μλΆ(mantissa)μ κ· μΌνκ² λΆν¬λ λΉνΈλ₯Ό κ°λ doubleμ μμ±νλ―λ‘ 0λΆν° 1 - 2^(-53) λ²μμμ λ κ· μΌνκ² κ°μ κ°μ Έμ¨λ€κ³ νλ€.
Random.nextInt(n)
μRandom.next()
λ₯Ό νκ· 2λ² λ―Έλ§ μ¬μ©νλ€. ν λ² νΈμΆνκ³ , λ§μ½ κ°μ΄MAX_INT
λ³΄λ€ μμ κ°μ₯ ν° nμ λ°°μλ³΄λ€ ν¬λ€λ©΄ λ€μ μλνκ³ , μλλΌλ©΄κ° mod n
μ λ°ννλ€. (μ΄λ κ² ν¨μΌλ‘μ¨MAX_INT
λ³΄λ€ μμ κ°μ₯ ν° nμ λ°°μλ³΄λ€ ν° κ°λ€μ΄ λμ€μ§ μλλ‘ νμ¬, κ°μ νΈν₯μ±μ μ€μΈλ€) κ·Έλμ 0λΆν° n-1μ λ²μμμ κ· μΌνκ² λΆν¬λ κ°μ λ°ννλ€....
Math.random()μ μ½ λ λ°°μ μ²λ¦¬λ₯Ό νμλ‘ νλ€.
κ²°λ‘ λ§ λ°μ Έλ³΄λ©΄ Math.random()
λ³΄λ€ Random.nextInt()
κ° λ ν¨μ¨μ μ΄λΌλ κ²μ΄λ€.
κ·Έλ¦¬κ³ λ μ€μν μ°¨μ΄μ μ΄ μλλ° Random.nextInt(n)
μλ seed κ°μ μ λ¬ν μ μλ€λ κ²μ΄λ€. λμΌν seedλ₯Ό κ°μ§ Random
κ°μ²΄λ₯Ό μ¬λ¬ μμ±ν μ μλ€. Math.random()
μΌλ‘λ λΆκ°λ₯νλ€.
More on the matter
REF
Last updated