首頁 > web前端 > js教程 > 主體

如何在 JavaScript 中建立一致的隨機數產生器?

DDD
發布: 2024-11-04 09:26:02
原創
555 人瀏覽過

How to Create a Consistent Random Number Generator in JavaScript?

建立可種子的JavaScript 隨機數產生器

JavaScript 中的Math.random() 函數自動提供0 到1 之間的隨機數根據當前時間初始化。但是,需要一個隨機數產生器,讓使用者定義的種子值產生可重複的偽隨機數序列。

解決方案:

實現可播種隨機數產生器涉及選擇支援播種的合適偽隨機數產生器 (PRNG) 演算法。一種流行的選擇是 Mersenne Twister 演算法,以其出色的隨機性和長週期而聞名。

但是,實作 Mersenne Twister 可能很複雜。對於初學者,建議使用線性同餘產生器 (LCG) 等替代方案。 LCG 實現起來很簡單,並且提供了不錯的隨機性,儘管它們不如 Mersenne Twister 強大。

LCG 實作(RNG 類別)

以下程式碼段示範了LCG使用GCC 常數在JavaScript 中實作:

<code class="javascript">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>
登入後複製

用法:

使用所需種子值建立RNG 類別的實例:
<code class="javascript">var rng = new RNG(20);</code>
登入後複製

存取隨機整數:
<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextInt());</code>
登入後複製

產生隨機浮點數(0到1):
<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextFloat());</code>
登入後複製

產生指定範圍內的隨機值:
<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50)); // Random integers between 10 (inclusive) and 50 (exclusive)</code>
登入後複製

從陣列中選擇隨機元素:
<code class="javascript">var digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
for (var i = 0; i < 10; i++)
  console.log(rng.choice(digits)); // Random digits from the array</code>
登入後複製

以上是如何在 JavaScript 中建立一致的隨機數產生器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板