Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melaksanakan Pemilihan Nombor Rawak Berwajaran Menggunakan Penjana Nombor Rawak Boost?

Bagaimanakah Saya Boleh Melaksanakan Pemilihan Nombor Rawak Berwajaran Menggunakan Penjana Nombor Rawak Boost?

Linda Hamilton
Lepaskan: 2024-12-20 20:15:10
asal
164 orang telah melayarinya

How Can I Implement Weighted Random Number Selection Using Boost's Random Number Generator?

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:

  1. Kira jumlah pemberat merentas semua hasil yang berpotensi.
  2. Janakan nombor rawak dalam julat jumlah berat.
  3. Lelaran melalui hasil, tolak pemberatnya daripada nombor rawak sehingga baki menjadi kurang daripada hasil semasa berat.

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan