實作可種子的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中文網其他相關文章!