
Math.random() 함수는 Mersenne Twister 알고리즘을 기반으로 하는 Linear Congruential Generator(LCG) 알고리즘을 사용합니다. 이 알고리즘은 20세기 초반에 개발된 알고리즘으로, 빠른 성능과 좋은 난수 생성 성능을 제공합니다.
LCG 알고리즘의 특징은 다음과 같습니다.
- 초기값(seed)과 계수(a), 곱수(c), 모듈(m)로 구성됩니다.
- 초기값(seed)을 곱수(c)로 곱한 후, 계수(a)만큼 더한 값을 모듈(m)로 나눈 후, 나머지 값을 새로운 초기값(seed)으로 사용합니다.
- 이 과정을 반복하여 새로운 초기값(seed)을 생성합니다.
Math.random() 함수는 초기값(seed)을 현재 시간을 기준으로 생성합니다. 현재 시간은 초 단위로 표현됩니다. 시간 정보는 숫자 생성에 영향을 미치지 않습니다. Math.random() 함수는 시간 정보를 사용하여 초기값(seed)을 생성한 후, LCG 알고리즘을 사용하여 임의의 숫자를 생성합니다.
Math.random() 함수가 반환하는 숫자는 정말로 임의의 숫자입니다. LCG 알고리즘은 좋은 난수 생성 성능을 제공하므로, 반환되는 숫자는 특정 패턴을 가지지 않습니다.
2025-03-19 14:56