시드 가능한 JavaScript 난수 생성기 구현
JavaScript에서 일련의 난수를 생성하는 것은 일반적인 요구 사항이지만 내장된 Math.random() 함수에는 특정 시드를 설정하는 기능이 없습니다. 이는 특정 숫자 시퀀스를 재현하거나 결정론적 무작위성을 생성하려는 경우 문제가 될 수 있습니다.
사용자 정의 난수 생성기 사용
이 제한을 극복하려면 다음을 수행할 수 있습니다. 시드 값을 지정할 수 있는 맞춤형 난수 생성기를 구현합니다. 다음은 LCG(선형 합동 생성기)를 사용하는 예입니다.
<code class="js">function RNG(seed) { this.m = 0x80000000; // 2**31 this.a = 1103515245; this.c = 12345; this.state = seed ? seed : Math.floor(Math.random() * (this.m - 1)); } RNG.prototype.nextInt = function() { this.state = (this.a * this.state + this.c) % this.m; return this.state; }</code>
이 LCG는 0과 (2**31 - 1) 사이의 정수 시퀀스를 생성합니다. Mersenne Twister와 같은 다른 유형의 난수 생성기는 더 강력한 무작위성을 보장하지만 구현이 더 복잡합니다.
시드 값 설정
시드 값을 설정하려면 , 이를 RNG 생성자에 인수로 전달할 수 있습니다.
<code class="js">var rng = new RNG(20);</code>
이는 지정된 시드로 생성기의 내부 상태를 초기화하여 반복 가능한 숫자 시퀀스를 생성하도록 합니다.
난수 생성기 사용
사용자 정의 RNG는 다음 메서드를 제공합니다.
예를 들어 10에서 50 사이의 난수 시퀀스를 생성하려면 다음을 수행합니다.
<code class="js">for (var i = 0; i < 10; i++) console.log(rng.nextRange(10, 50));</code>
추가 고려 사항
위 내용은 JavaScript에서 시드 가능한 난수 생성기를 어떻게 만듭니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!