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에서 Weighted Random Selection을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!