Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Membenihkan Penjana Nombor Rawak dalam JavaScript?

Bagaimanakah Saya Boleh Membenihkan Penjana Nombor Rawak dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-03 06:24:14597semak imbas

How Can I Seed Random Number Generators in JavaScript?

Membenihkan Penjana Nombor Rawak dalam JavaScript

Math.random() terbina dalam dalam JavaScript tidak menyediakan keupayaan untuk menyemai penjana nombor rawak, bermakna ia tidak boleh dimulakan dengan nilai tertentu untuk menjana urutan rawak yang telah ditetapkan nombor.

Walaupun pembenihan tidak boleh dilakukan dengan Math.random(), terdapat perpustakaan luaran dan pelaksanaan yang menawarkan fungsi tersuai untuk menjana nombor pseudorandom boleh benih. Berikut ialah beberapa pilihan:

Fungsi Penjana Nombor Pseudorandom (PRNG)

Beberapa fungsi PRNG yang padat dan cekap boleh dilaksanakan dalam JavaScript, menyediakan nombor rawak berkualiti tinggi yang boleh disemai dengan satu atau lebih nombor 32-bit.

Seed Permulaan

Adalah penting untuk memulakan PRNG anda dengan betul untuk mengelakkan benih entropi rendah yang boleh menjejaskan rawak nombor yang dijana. Berikut ialah dua kaedah biasa:

  • Fungsi Cincang: Fungsi cincang boleh menjana benih daripada rentetan pendek, membolehkan anda menggunakan rentetan sebagai benih. Sebagai contoh, fungsi cincang cyrb128 boleh menghasilkan nilai cincang 128-bit daripada rentetan.
  • Padding Data Dummy: Sebagai alternatif, anda boleh menampal benih dengan data tiruan dan memajukan penjana a beberapa kali untuk mencampurkan keadaan awal dengan teliti.

PRNG Algoritma

Berikut ialah contoh algoritma sfc32 (Simple Fast Counter), yang mempunyai keadaan 128-bit dan menghasilkan nombor rawak dalam julat 0-1:

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;
  }
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenihkan Penjana Nombor Rawak dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn