JavaScript에서 의사 난수를 반환하는 Math.random()
의 알고리즘이 최근 XorShify128+로 변경되고 있습니다.
메이저 브라우저의 JavaScript 엔진은 모두 변경돼 있으므로 이번에 정리해 둡니다.
Chrome/V8
Chrome 49 Stable에 적용될 예정입니다.
Firefox/SpiderMonkey
WebKit/JavaScriptCore
MSEdge/ChakraCore
알고리즘
- Math.random() and 32-bit precision
- Google Chrome가 채용한, 의사 난수 생성 알고리즘 「XorShift의 수리(수학의 이론)」 - 비리알의 연구 노트(일본어)
사양
Returns a Number value with positive sign, greater than or equal to 0 but less than 1, chosen randomly or pseudo randomly with approximately uniform distribution over that range, using an implementation-dependent algorithm or strategy. This function takes no arguments.
사양 에서는 "구현 의존의 알고리즘으로(implementation-dependent algorithm)"라고 작성돼 있으며, 특히 Math.random()
의 알고리즘은 규정돼 있지 않습니다.