가중 난수를 생성하는 방법: 누적 확률 분포가 답입니까?

Linda Hamilton
풀어 주다: 2024-11-11 04:09:03
원래의
899명이 탐색했습니다.

How to Generate Weighted Random Numbers: Is Cumulative Probability Distribution the Answer?

가중 난수 생성: 거부 샘플링을 넘어

확률의 영역에서 가중 난수 생성은 다음을 위한 필수 도구 역할을 합니다. 시뮬레이션 및 통계 모델링. 거부 샘플링은 종종 간단한 솔루션으로 사용되지만 성능 및 메모리 소비에 한계가 있습니다.

누적 확률 분포의 형태로 우아한 대안이 나타납니다. 이 접근 방식을 사용하면 미리 구성된 조회 테이블이 필요하지 않으므로 메모리를 크게 절약하고 값 선택 시 일정한 시간 성능을 얻을 수 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿