2012-10-13 4 views
1

나는 기본적인 이산 수학/확률 질문에 비틀 거리며 나는 나의 해결책에 대한 개선을위한 아이디어를 얻고 싶었다.주어진 확률을 가진 샘플

컬렉션 (알파벳, 자연수 등)이 있다고 가정합니다. 주어진 확률이 P 인이 컬렉션에서 특정 값 X을 어떻게 만듭니 까? 즉, {0, 1, 2, 3}

이를 우리는 배열 v = [A, B, B, B]를 구축하고 우리가 균일하게 배열의 인덱스를 샘플링하는 rand 기능을 사용

Collection = {A, B} 
X = A, P = 1/4 

:

나는 예를 들어 내 순진 솔루션을 설명 할 것이다 접근 방식은 효과가 있지만 효율적이지 않습니다. P이 작 으면 v의 메모리 저장 용량이 커집니다. 따라서 stackoverflow 커뮤니티가 어떤 아이디어를 개선했는지 궁금합니다.

감사합니다.

답변

5

간격 [0,1]을 합집합이 [0,1] 인 분리 간격으로 분할합니다. 각 이벤트를 선택할 확률에 해당하는 각 파티션의 크기를 만듭니다. 그런 다음 [0,1]에서 임의로 샘플링하고 결과가있는 파티션을 평가 한 다음 해당 간격에 해당하는 선택 항목을 찾으십시오. 귀하의 예에서 이것은 다음 2 개의 간격 [0,1/4]과 [1/4,1] - [0,1]로부터 임의의 균일 한 값을 생성하게됩니다. 귀하의 샘플이 첫 번째 간격에 놓여 있다면 , 다른 간격은 X = B입니다.

1

제안 된 솔루션은 실제로 좋지 않으며이를 해결하는 가장 일반적인 방법은 수학자 1975 상태 (역 CDF 방법이라고도 함)입니다. 특정 문제 (다항 샘플링)의 경우, 이항 분포에서 일련의 드로잉을 사용하여 컬렉션의 샘플을 얻을 수도 있습니다. 샘플링 방법에 익숙하지 않은 경우 더욱 직관적입니다.

컬렉션의 첫 번째 항목의 확률이 p_1 인 경우 [0-1] 간격으로 일정하게 샘플링합니다. 샘플이 p_1보다 작 으면 항목 1을 반환하고 나머지 결과는 1-p_1만큼 다시 표준화 한 다음 가능한 결과로 처리를 반복합니다. 각각의 실패한 표본 추출 후 남은 결과의 합계가 1이되도록 나머지 결과를 다시 정규화합니다. 마지막 결과가 나오면 확률 1로 반환합니다.이 과정의 결과는 무작위 표본으로 분산됩니다 원래 벡터에 따라.

이 방법은 다항식의 개별 구성 요소가 이진 분포를 가지며 다항식의 모든 하위 벡터는 위에 설명 된 재 정규화에 의해 주어진 매개 변수를 사용하여 다항식이기도합니다.

관련 문제