可種子JavaScript 隨機數產生器
JavaScript Math.random() 函數根據目前時間產生0 到1 之間的隨機值,類似Java的隨機數產生器。但是,它缺乏指定種子值來控制生成數字的順序的能力。
建立具有種子支援的自訂隨機數產生器
建立隨機數具有種子支援的數位產生器,請考慮以下選項:
實作線性同餘產生器(LCG)
LCG實現起來相對簡單,並提供良好的隨機性品質。您可以利用以下常數:
m = 0x80000000; // 2**31 a = 1103515245; c = 12345;
這是JavaScript 中的範例實作:
<code class="javascript">function RNG(seed) { this.m = 0x80000000; 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>
您可以擴充此RNG 類別以提供其他方法,例如nextFloat、nextRange 和基於選擇的方法在LCG 核心。
利用庫進行短種子RNG
諸如[js-random](https://www.npmjs.com/package/
範例實作
這是一個使用基於LCG 的RNG的簡單範例:
<code class="javascript">var rng = new RNG(20); for (var i = 0; i < 10; i++) { console.log(rng.nextRange(10, 50)); }</code>
以上是如何在 JavaScript 中建立可播種的隨機數產生器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!