munifico.github.io

munifico's anything page

Follow me on GitHub

의사 난수 생성

자바스크립트에서 의사 난수를 생성할 때는 Math.random()을 사용합니다. 이 함수는 0 이상 1 미만의 숫자를 반환합니다. 대수학에서 x 이상 y 이하를 [x, y], x 초과 y 미만을 (x, y) 라고 표기한 것을 기억하나요? 이 표기법을 따르면 Math.random()이 반환하는 숫자는 [0, 1)이라고 쓸 수 있습니다.

Math.random()은 0 이상 1 미만의 범위에 있는 의사 난수를 생성할 뿐, 다른 범위의 의사 난수를 생성하는 간편 메서드는 없습니다. 이하 표는 다른 범위의 난수가 필요할 때 널리 쓰이는 공식입니다. 이 표에서 x와 y는 실수real number, m과 n은 정수입니다.

범위 예제
0 이상 1 미만 Math.random()
x 이상 y 미만 x + (y-x)*Math.random()
m 이상 n 미만의 정수 x + Math.floor((n-m)*Math.random())
m이상 n 이하의 정수 x + Math.floor(n-m+1)*Math.random())

자바스크립트의 의사 난수 발생기는 시드seed 숫자를 쓸 수 없다는 단점이 지적되곤 합니다. 의사 난수를 사용하는 알고지름 중에는 시드 숫자가 중요할 때가 많습니다. 시드를 사용해 의사 난수를 생성해야 한다면 데이비드 바우David Baw의 seedrandom.js 패키지(https://github.com/davidbau/seedrandom)을 보십시오.

NOTE 의사 난수pseudorandom number 발생기를 난수random number 발생기라 부르는 사람이 많습니다만, 엄밀히 말하면 틀린 표현입니다. 의사 난수 발생기가 생성하는 난수는 대부분의 애플리케이션에서 랜덤하다고 말할 수 있을 정도로 무작위 하다는 의미로, 진정한 난수를 만드는 건 대단히 어려운 문제입니다.


이전 : 기타 함수
다음 : 삼각 함수
목차