首頁  >  文章  >  web前端  >  如何在 JavaScript 中建立可播種的隨機數產生器?

如何在 JavaScript 中建立可播種的隨機數產生器?

Susan Sarandon
Susan Sarandon原創
2024-11-04 17:35:02520瀏覽

How to Create a Seedable Random Number Generator in JavaScript?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn