Penjanaan Nombor Rawak Berwajaran
Memilih nombor rawak dengan kebarangkalian tertentu ialah tugas biasa dalam pengaturcaraan. Penjana nombor rawak Boost menyediakan cara mudah untuk memilih item dengan kebarangkalian berwajaran.
Pertimbangkan senario di mana anda ingin memilih nombor rawak antara 1 dan 3 dengan pemberat berikut:
Algoritma
Boost tidak mempunyai fungsi terbina dalam untuk penjanaan nombor rawak berwajaran. Walau bagaimanapun, terdapat algoritma mudah yang boleh digunakan:
Kod Contoh
Dalam Boost, menggunakan random_device dan penjana nombor rawak mt19937:
std::mt19937 rng(std::random_device{}()); int total_weight = 90 + 56 + 4; for (int i = 0; i < total_weight; i++) { int random_number = rng() % total_weight; int current_weight = 90; if (random_number < current_weight) { return 1; } current_weight += 56; if (random_number < current_weight) { return 2; } return 3; // Reached the end of the weights }
Pengoptimuman
Jika berat jarang berubah dan rawak picks adalah kerap, pengoptimuman boleh digunakan dengan menyimpan jumlah berat terkumpul dalam setiap item. Ini membolehkan pendekatan carian binari yang lebih cekap.
Selain itu, jika bilangan item tidak diketahui tetapi pemberatnya diketahui, pensampelan takungan boleh disesuaikan untuk penjanaan nombor rawak berwajaran.
Atas ialah kandungan terperinci Bagaimanakah Penjana Nombor Rawak Boost Boleh Digunakan untuk Pemilihan Nombor Rawak Berwajaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!