Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Membuat Penjana Nombor Rawak Seedable dalam JavaScript?

Bagaimana untuk Membuat Penjana Nombor Rawak Seedable dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-11-04 17:35:02
asal
586 orang telah melayarinya

How to Create a Seedable Random Number Generator in JavaScript?

Penjana Nombor Rawak JavaScript Boleh Benih

Fungsi JavaScript Math.random() menjana nilai rawak antara 0 dan 1 berdasarkan masa semasa, serupa dengan penjana nombor rawak Java. Walau bagaimanapun, ia tidak mempunyai keupayaan untuk menentukan nilai benih untuk mengawal jujukan nombor yang dijana.

Mencipta Penjana Nombor Rawak Tersuai dengan Sokongan Benih

Untuk mencipta rawak penjana nombor dengan sokongan benih, pertimbangkan pilihan berikut:

Melaksanakan Penjana Kongruen Linear (LCG)

LCG adalah agak mudah untuk dilaksanakan dan memberikan kualiti rawak yang baik. Anda boleh menggunakan pemalar berikut:

m = 0x80000000; // 2**31
a = 1103515245;
c = 12345;
Salin selepas log masuk

Berikut ialah contoh pelaksanaan dalam JavaScript:

<code class="javascript">function RNG(seed) {
  this.m = 0x80000000;
  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

Anda boleh melanjutkan kelas RNG ini untuk menyediakan kaedah tambahan seperti nextFloat, nextRange dan berdasarkan pilihan pada teras LCG.

Menggunakan Perpustakaan untuk RNG Boleh Benih Pendek

Perpustakaan seperti [js-random](https://www.npmjs.com/package/ js-random) menyediakan RNG pendek dan boleh benih dengan pilihan untuk algoritma yang berbeza.

Contoh Pelaksanaan

Berikut ialah contoh mudah menggunakan RNG berasaskan LCG:

<code class="javascript">var rng = new RNG(20);
for (var i = 0; i < 10; i++) {
  console.log(rng.nextRange(10, 50));
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Membuat Penjana Nombor Rawak Seedable 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