Java での重み付きランダム選択
セットからランダムな項目を選択する場合、関連性の高い項目に選択を偏らせることが望ましいことがよくあります。重み。 Java では、これは、この目的のために特別に調整された特殊なデータ構造である NavigableMap を使用して実現できます。
NavigableMap を使用して実装された RandomCollection クラスでは、重み付けされた項目を追加でき、それぞれの項目に基づいてランダムな項目を取得できます。重み。 RandomCollection を作成するには、ランダム ジェネレーター (オプション、またはデフォルトの Random を使用) を指定するだけです。
RandomCollection への項目の追加は簡単です。各アイテムは、選択される確率を表す重みに関連付けられています。新しいアイテムが追加されると、総重量は維持されます。
ランダムなアイテムを選択するには、0 から総重量までの乱数が生成されます。次に、NavigableMap の highEntry() メソッドを使用して、乱数よりも大きい重みを持つ最初のエントリを取得します。このエントリに関連付けられた値は、ランダムに選択された項目です。
例:
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 中国語 Web サイトの他の関連記事を参照してください。