Rumah  >  Artikel  >  Java  >  Bagaimanakah saya boleh melaksanakan Pemilihan Rawak Berwajaran di Jawa?

Bagaimanakah saya boleh melaksanakan Pemilihan Rawak Berwajaran di Jawa?

Susan Sarandon
Susan Sarandonasal
2024-11-06 19:58:03628semak imbas

How can I implement Weighted Random Selection in Java?

Pemilihan Rawak Berwajaran di Jawa

Apabila memilih item rawak daripada set, selalunya wajar untuk memihakkan pemilihan ke arah item yang mempunyai kaitan yang lebih tinggi berat. Di Java, ini boleh dicapai menggunakan NavigableMap, struktur data khusus yang disesuaikan khusus untuk tujuan ini.

Kelas RandomCollection, dilaksanakan menggunakan NavigableMap, membenarkan item berwajaran ditambah dan mendapatkan semula item rawak berdasarkan masing-masing berat. Untuk membuat RandomCollection, hanya tentukan penjana rawak (pilihan, atau gunakan Random lalai).

Menambah item pada RandomCollection adalah mudah. Setiap item dikaitkan dengan berat, yang mewakili kebarangkalian untuk dipilih. Jumlah berat dikekalkan apabila item baharu ditambah.

Untuk memilih item rawak, nombor rawak antara 0 dan jumlah berat dijana. Kaedah higherEntry() NavigableMap kemudiannya digunakan untuk mendapatkan entri pertama dengan berat lebih besar daripada nombor rawak. Nilai yang dikaitkan dengan entri ini ialah item yang dipilih secara rawak.

Contoh:

RandomCollection<String> rc = new RandomCollection<>();
rc.add(40, "dog").add(35, "cat").add(25, "horse");

for (int i = 0; i < 10; i++) {
    System.out.println(rc.next());
}

Kod ini akan menjana urutan rawak haiwan ("anjing", "kucing", "kuda" ) ditimbang mengikut kebarangkalian mereka.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan Pemilihan Rawak Berwajaran di Jawa?. 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