가중 난수 생성
소개
다양한 응용 분야에서 다음이 필요한 경우가 많습니다. 옵션 세트에서 임의의 숫자를 선택하세요. 각 옵션에는 선택될 특정 확률이 할당되어 있습니다. 이 개념을 가중 난수 생성이라고 합니다.
거부 샘플링 접근법
가중 난수를 생성하는 한 가지 방법은 거부 샘플링을 이용하는 것입니다. 이 접근 방식에는 각 옵션이 할당된 가중치만큼 나타나는 조회 테이블을 만드는 작업이 포함됩니다. 예를 들어 옵션 A의 확률이 80%인 경우 조회 테이블에 80번 나타납니다. 난수를 생성하기 위해 테이블에서 임의의 위치를 선택하고 해당 옵션을 반환합니다.
거부 샘플링의 장점과 단점
거부 샘플링은 상수를 제공합니다. - 조회 테이블이 구성된 후 난수를 선택하는 시간 성능입니다. 그러나 테이블을 구축하려면 선형 알고리즘 성능이 필요하므로 옵션이 많거나 가중치가 매우 정확한 경우에는 문제가 될 수 있습니다.
반복 가중치 합산 접근 방식
또 다른 접근 방식은 반복적인 가중치 합산입니다. 여기서는 [0,1) 범위에서 난수를 생성하여 가중치의 누적합과 비교한다. 난수를 초과하는 가중치와 관련된 옵션을 가중치 난수로 선택합니다.
반복적 가중치 합산의 장점과 단점
기각 샘플링과 비교하여, 반복적 가중치 합산에는 초기 비용이 없지만 세트의 옵션 수와 관련하여 선형 평균 알고리즘 성능이 있습니다. 또한 가중치의 합이 1로 가정됩니다.
구현 고려 사항
이러한 접근 방식을 구현할 때는 가중치 사양을 취하는 고차 함수를 생성하는 것이 좋습니다. 가중 난수를 생성하는 함수를 반환합니다. 이렇게 하면 재사용이 가능하고 조회 테이블을 구축하거나 가중치를 여러 번 누적하는 오버헤드가 방지됩니다.
위 내용은 가중 난수를 생성하는 방법: 기각 샘플링과 반복 가중치 합산?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!