Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mencipta Penjana Nombor Rawak Konsisten dalam JavaScript?

Bagaimana untuk Mencipta Penjana Nombor Rawak Konsisten dalam JavaScript?

DDD
Lepaskan: 2024-11-04 09:26:02
asal
580 orang telah melayarinya

How to Create a Consistent Random Number Generator in JavaScript?

Membuat Penjana Nombor Rawak JavaScript Boleh Benih

Fungsi Math.random() dalam JavaScript menyediakan nombor rawak antara 0 dan 1, secara automatik dimulakan berdasarkan masa semasa. Walau bagaimanapun, terdapat keperluan untuk penjana nombor rawak yang membenarkan nilai benih yang ditentukan pengguna untuk menghasilkan urutan nombor rawak pseudo yang boleh berulang.

Penyelesaian:

Melaksanakan penjana nombor rawak boleh benih melibatkan pemilihan algoritma penjana nombor pseudorandom (PRNG) yang sesuai yang menyokong pembenihan. Satu pilihan yang popular ialah algoritma Mersenne Twister, yang terkenal dengan kerancakan yang sangat baik dan tempoh yang lama.

Walau bagaimanapun, melaksanakan Mersenne Twister boleh menjadi rumit. Untuk pemula, alternatif seperti penjana kongruen linear (LCG) disyorkan. LCG adalah mudah untuk dilaksanakan dan memberikan rawak yang baik, walaupun ia tidak sekuat Mersenne Twister.

Pelaksanaan LCG (Kelas RNG)

Coretan berikut menunjukkan LCG pelaksanaan dalam JavaScript menggunakan pemalar GCC:

<code class="javascript">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

Penggunaan:

Buat contoh kelas RNG dengan nilai benih yang diingini:

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

Akses integer rawak:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextInt());</code>
Salin selepas log masuk

Jana nombor terapung rawak (0 hingga 1):

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextFloat());</code>
Salin selepas log masuk

Jana nilai rawak dalam julat yang ditentukan:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50)); // Random integers between 10 (inclusive) and 50 (exclusive)</code>
Salin selepas log masuk

Pilih elemen rawak daripada tatasusunan:

<code class="javascript">var digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
for (var i = 0; i < 10; i++)
  console.log(rng.choice(digits)); // Random digits from the array</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Penjana Nombor Rawak Konsisten 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan