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>
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>
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:
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>
Pertimbangan Tambahan
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!