Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Pemilihan Nombor Rawak Berwajaran Menggunakan Penjana Nombor Rawak Boost?
Pemilihan Nombor Rawak Berwajaran dalam Pengaturcaraan
Apabila menjana nombor rawak, adalah berfaedah untuk memberikan pemberat yang berbeza kepada hasil yang mungkin untuk mencipta wajaran pengedaran. Dalam artikel ini, kami meneroka cara untuk melaksanakan pemilihan nombor rawak berwajaran dalam pengaturcaraan, memfokuskan pada penyepaduannya dengan fungsi penjana nombor rawak Boost.
Rancangkan dan Rawak Berwajaran
Boost. tidak secara eksplisit menyediakan fungsi langsung untuk penjanaan nombor rawak berwajaran. Sebaliknya, kita boleh memanfaatkan algoritma klasik untuk pemilihan rawak berwajaran:
Algoritma ini boleh disesuaikan dengan mudah kepada keupayaan penjanaan nombor rawak Boost:
// Function to generate weighted random numbers template <typename T, typename WeightType> T weighted_random(std::vector<T>& values, std::vector<WeightType>& weights) { WeightType total_weight = std::accumulate(weights.begin(), weights.end(), 0.0); WeightType random_weight = boost::random::uniform_real_distribution<>(0.0, total_weight)(boost::random::mt19937()); T selected_value; WeightType current_weight = 0.0; for (size_t i = 0; i < values.size(); ++i) { current_weight += weights[i]; if (random_weight < current_weight) { selected_value = values[i]; break; } } return selected_value; }
Pemilihan Nombor Rawak Berwajaran dengan Rangka Kerja Lain
Algoritma yang disediakan boleh digunakan pada rangka kerja penjanaan nombor rawak yang lain juga. Perkara utama adalah untuk membuat pemetaan antara pemberat dan hasil dan kemudian berulang kali mengambil sampel daripada pengedaran sehingga hasil yang diingini diperoleh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pemilihan Nombor Rawak Berwajaran Menggunakan Penjana Nombor Rawak Boost?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!