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中文網其他相關文章!