Jana Nombor Rawak Berwajaran: Melampaui Persampelan Penolakan
Dalam bidang kebarangkalian, penjanaan nombor rawak berwajaran berfungsi sebagai alat penting untuk simulasi dan pemodelan statistik. Walaupun pensampelan penolakan sering berfungsi sebagai penyelesaian yang mudah, ia memberikan had dalam prestasi dan penggunaan memori.
Alternatif yang elegan muncul dalam bentuk taburan kebarangkalian terkumpul. Pendekatan ini menghapuskan keperluan untuk jadual carian yang telah dibina sebelumnya, yang membawa kepada penjimatan memori yang ketara dan prestasi masa tetap dalam memilih nilai. Begini cara ia berfungsi dalam JavaScript:
function weightedRand(spec) { var sum = 0; for (var i in spec) { sum += spec[i]; } var r = Math.random() * sum; for (i in spec) { r -= spec[i]; if (r <= 0) return i; } }
Penjana nombor rawak berwajaran sering mencari aplikasi dalam senario seperti:
Dalam kes tertentu, di mana pemberat diagihkan sama rata, pendekatan yang lebih mudah terbukti berkesan: hanya pilih indeks rawak daripada tatasusunan yang mewakili nilai yang mungkin. Walau bagaimanapun, kaedah ini adalah pendek untuk pengagihan berat yang tidak sekata.
Ingat, pilihan pelaksanaan bergantung pada faktor seperti bilangan pilihan, pengagihan pemberat dan ciri prestasi yang diingini.
Atas ialah kandungan terperinci Cara Menjana Nombor Rawak Berwajaran: Adakah Taburan Kebarangkalian Terkumpul Jawapannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!