首頁 > web前端 > js教程 > 如何在 JavaScript 中播種隨機數產生器?

如何在 JavaScript 中播種隨機數產生器?

Barbara Streisand
發布: 2024-12-03 06:24:14
原創
591 人瀏覽過

How Can I Seed Random Number Generators in JavaScript?

在JavaScript 中播種隨機數產生器

JavaScript 中內建的Math.random() 不提供播種的能力隨機數產生器,這意味著它不能用特定值初始化來產生預定的隨機數序列。

播種時Math.random() 是不可能的,有一些外部函式庫和實作提供了用於產生可種子偽隨機數的自訂函數。這裡有一些選項:

偽隨機數產生器(PRNG)函數

可以在JavaScript 中實現幾個緊湊且高效的PRNG 函數,提供高品質的隨機數字可以用一個或多個32 位數作為種子。

種子初始化

正確初始化 PRNG 至關重要,以避免低熵種子影響產生數字的隨機性。這裡有兩種常用的方法:

  • 雜湊函數:雜湊函數可以從短字串產生種子,讓您使用字串作為種子。例如,cyrb128 雜湊函數可以從字串產生 128 位元雜湊值。
  • 虛擬資料填充: 或者,您可以使用虛擬資料填充種子並將生成器推進幾次以徹底混合初始狀態。

PRNG演算法

以下是sfc32(簡單快速計數器)演算法

function sfc32(a, b, c, d) {
  return function() {
    a |= 0; b |= 0; c |= 0; d |= 0;
    let t = (a + b | 0) + d | 0;
    d = d + 1 | 0;
    a = b ^ b >>> 9;
    b = c + (c << 3) | 0;
    c = (c << 21 | c >>> 11);
    c = c + t | 0;
    return (t >>> 0) / 4294967296;
  }
}
登入後複製
以下是sfc32(簡單快速計數器)演算法的範例,該演算法具有128 位元狀態並產生0-1 範圍內的隨機數:

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

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