首頁  >  文章  >  Java  >  如何在 Java 中實現加權隨機選擇?

如何在 Java 中實現加權隨機選擇?

Susan Sarandon
Susan Sarandon原創
2024-11-06 19:58:03628瀏覽

How can I implement Weighted Random Selection in Java?

Java 中的加權隨機選擇

從集合中選擇隨機項目時,通常希望將選擇偏向於具有更高相關性的項目重量。在 Java 中,這可以使用 NavigableMap 來實現,這是專門為此目的而自訂的專用資料結構。

使用 NavigableMap 實現的 RandomCollection 類別允許添加加權項並根據其各自的值檢索隨機項重量。若要建立 RandomCollection,只需指定隨機產生器(可選,或使用預設的 Random)。

為 RandomCollection 新增項目非常簡單。每個項目都與一個權重相關聯,權重代表其被選擇的機率。添加新物品時,總重量會保持不變。

要選擇隨機物品,會產生 0 到總重量之間的隨機數。然後使用 NavigableMap 的 upperEntry() 方法檢索權重大於隨機數的第一個條目。與此條目關聯的值是隨機選擇的項目。

範例:

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());
}

此程式碼將產生隨機的動物序列(「狗」、「貓」、「馬」) ) 根據機率加權。

以上是如何在 Java 中實現加權隨機選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn