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>
Penggunaan:
Buat contoh kelas RNG dengan nilai benih yang diingini:
<code class="javascript">var rng = new RNG(20);</code>
Akses integer rawak:
<code class="javascript">for (var i = 0; i < 10; i++) console.log(rng.nextInt());</code>
Jana nombor terapung rawak (0 hingga 1):
<code class="javascript">for (var i = 0; i < 10; i++) console.log(rng.nextFloat());</code>
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>
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>
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!