>  기사  >  Java  >  Java에서 Weighted Random Selection을 어떻게 구현할 수 있나요?

Java에서 Weighted Random Selection을 어떻게 구현할 수 있나요?

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의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.