Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Membuat Penjana Nombor Rawak Seedable dalam 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;
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>
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>
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!