Bagaimanakah cara saya mencipta penjana nombor rawak boleh benih dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-11-04 08:48:30
asal
785 orang telah melayarinya

How do I create a seedable random number generator in JavaScript?

Melaksanakan Penjana Nombor Rawak JavaScript Boleh Benih

Ia adalah keperluan biasa untuk menjana urutan nombor rawak dalam JavaScript, tetapi terbina- dalam fungsi Math.random() tidak mempunyai keupayaan untuk menetapkan benih tertentu. Ini boleh menjadi masalah apabila kita ingin menghasilkan semula urutan nombor tertentu atau mencipta rawak deterministik.

Menggunakan Penjana Nombor Rawak Tersuai

Untuk mengatasi had ini, kita boleh melaksanakan penjana nombor rawak tersuai yang membolehkan kami menentukan nilai benih. Berikut ialah contoh menggunakan Penjana Kongruen Linear (LCG):

<code class="js">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>
Salin selepas log masuk

LCG ini menghasilkan jujukan integer antara 0 dan (2**31 - 1). Jenis penjana nombor rawak lain, seperti Mersenne Twister, memberikan jaminan rawak yang lebih kukuh tetapi lebih kompleks untuk dilaksanakan.

Menetapkan Nilai Benih

Untuk menetapkan nilai benih , kita boleh menyampaikannya sebagai hujah kepada pembina RNG:

<code class="js">var rng = new RNG(20);</code>
Salin selepas log masuk

Ini akan memulakan keadaan dalaman bagi penjana dengan benih yang ditentukan, memastikan ia menghasilkan urutan nombor yang boleh berulang.

Menggunakan Penjana Nombor Rawak

RNG tersuai menyediakan kaedah berikut:

  • nextInt(): Menghasilkan integer rawak antara 0 dan (2**31 - 1).
  • nextFloat(): Menjana nombor terapung rawak antara 0 dan 1.
  • nextRange(mula, tamat): Menjana nombor rawak dalam julat yang ditentukan (termasuk permulaan, hujung eksklusif).
  • pilihan(tatasusunan): Memilih unsur rawak daripada an tatasusunan.

Sebagai contoh, untuk menjana jujukan nombor rawak antara 10 dan 50:

<code class="js">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50));</code>
Salin selepas log masuk

Pertimbangan Tambahan

  • Pertimbangkan ciri dan had RNG yang dipilih sebelum menggunakannya.
  • Gunakan helper berfungsi di sekeliling RNG untuk memudahkan penggunaannya, seperti randRange(mula, tamat) untuk menjana nombor dalam julat tertentu.
  • Rujuk dokumentasi RNG untuk butiran lanjut dan arahan penggunaan.

Atas ialah kandungan terperinci Bagaimanakah cara saya mencipta penjana nombor rawak boleh benih 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