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
Lepaskan: 2024-12-03 06:24:14
asal
591 orang telah melayarinya

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;
  }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan