가중 난수 생성: 거부 샘플링을 넘어
확률의 영역에서 가중 난수 생성은 다음을 위한 필수 도구 역할을 합니다. 시뮬레이션 및 통계 모델링. 거부 샘플링은 종종 간단한 솔루션으로 사용되지만 성능 및 메모리 소비에 한계가 있습니다.
누적 확률 분포의 형태로 우아한 대안이 나타납니다. 이 접근 방식을 사용하면 미리 구성된 조회 테이블이 필요하지 않으므로 메모리를 크게 절약하고 값 선택 시 일정한 시간 성능을 얻을 수 있습니다. JavaScript에서 작동하는 방식은 다음과 같습니다.
function weightedRand(spec) { var sum = 0; for (var i in spec) { sum += spec[i]; } var r = Math.random() * sum; for (i in spec) { r -= spec[i]; if (r <= 0) return i; } }
가중 난수 생성기는 다음과 같은 시나리오에서 자주 사용됩니다.
가중치가 고르게 분포되는 특정한 경우에는 훨씬 더 간단한 접근 방식이 효과적임이 입증되었습니다. 가능한 값을 나타내는 배열에서 임의의 인덱스를 선택하기만 하면 됩니다. 그러나 이 방법은 고르지 않은 가중치 배분에는 적합하지 않습니다.
구현 선택은 옵션 수, 가중치 배분, 원하는 성능 특성 등의 요인에 따라 달라집니다.
위 내용은 가중 난수를 생성하는 방법: 누적 확률 분포가 답입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!