Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melakukan Pemilihan Rawak Berwajaran yang Cekap dengan dan Tanpa Penggantian?

Bagaimana untuk Melakukan Pemilihan Rawak Berwajaran yang Cekap dengan dan Tanpa Penggantian?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 09:45:30953semak imbas

How to Perform Efficient Weighted Random Selection with and Without Replacement?

Pemilihan Rawak Berwajaran dengan dan Tanpa Penggantian

Sebagai tindak balas kepada cabaran pengaturcaraan, kami mencari algoritma yang cekap untuk pemilihan rawak berwajaran daripada senarai, kedua-duanya dengan dan tanpa penggantian.

Pemilihan Berwajaran Dengan Penggantian

Satu kaedah berkesan untuk pemilihan wajaran dengan penggantian ialah Kaedah Alias. Teknik ini mencipta satu set tong sampah bersaiz sama untuk setiap elemen berwajaran. Dengan menggunakan operasi bit, kami boleh mengindeks tong sampah ini dengan cekap tanpa menggunakan carian binari. Setiap tong menyimpan satu peratusan yang mewakili sempadan antara unsur wajaran asal.

Pertimbangkan contoh lima unsur dengan pemberat yang sama: (a, b, c, d, e).

Pelaksanaan Kaedah Alias

  1. Normalkan pemberat: Bahagikan setiap pemberat dengan jumlah jumlah kepada 1.0.
  2. Tentukan kuasa terkecil 2 lebih besar daripada atau sama dengan nombor daripada elemen (di sini, 8).
  3. Tetapkan partition kosong pada setiap elemen.
  4. Ulang langkah berikut sehingga semua pemberat diedarkan:

    • Letakkan seberapa banyak elemen yang mempunyai baki berat yang paling sedikit ke dalam partition kosong.
    • Jika partition tidak diisi, tambahkan elemen baki yang paling berat.

Untuk contoh kami, selepas beberapa lelaran, kami mempunyai partition berikut:

  • p1: {a, 1.0}
  • p2: {a, b, 0.6}

Pemilihan Masa Jalan

  1. Jana nombor rawak antara 0 dan 1.
  2. Bitsshift nombor rawak untuk mencari indeks partition.
  3. Jika partition dipecah, gunakan bahagian perpuluhan nombor anjakan bit untuk memutuskan elemen mana yang hendak dikembalikan.

Pemilihan Berwajaran Tanpa Penggantian

Sementara algoritma seperti kaedah takungan berwajaran wujud untuk pemilihan tidak berwajaran tanpa penggantian, masalah ini masih tidak dapat diselesaikan.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pemilihan Rawak Berwajaran yang Cekap dengan dan Tanpa Penggantian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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