2016-11-29 1 views
0

거절 방법을 사용하여 확률 밀도 함수 f (x) = (1/3) x^2, -1 < x < 2 인 분포에서 1000 개의 숫자를 샘플링하려고합니다. 나는 또한 데이터를 기반으로 히스토그램을 그려보고 싶다.거절 방법을 사용하여 표본 추출

내 교과서는 거부 방법을 사용하기 위해 다음 규칙을 제공합니다. 1. a ≤ x ≤ b에 대해 0 ≤ f (x) ≤c 인 숫자 a, b 및 c를 찾습니다. 바운딩 박스 은 x 축을 따라 a에서 b까지 그리고 y 축을 따라 0에서 c까지 뻗어 있습니다.
2. 난수 생성기 또는 난수 테이블에서 표준 균일 무작위 변수 U와 V를 얻습니다.
3. X = a + (b-a) U 및 Y = cV를 정의하십시오. 그러면 X는 유니폼 (a, b) 분포를 가지며, Y는 유니폼 (0, c)이고 포인트 (X, Y)는 경계 상자에서 균등하게 분포됩니다. 그 규칙을 바탕으로

나는 다음과 같은 코드를 작성,하지만 난 정말 멀리 떨어져 적절한 솔루션에서 해요 정확히 p가 정의 몇 가지 지침

a=-1; b=2; c=2; 

while p < 1000 

    U = rand; V = rand; 

    X = a+U*(b-a); Y = c*V; f = (1/3)*X^2; 

    if Y<=f 
     x(p)=X; 
     p = p+1; 
    end 

end 

histogram(x); 

답변

0

를 사용할 수 있다고 생각? 0

Wrt 알고리즘으로 설정 한 경우 더 효율적으로 만들 수 있다는 것을 제외하고는 더보기 좋게 보입니다. X=2에서 최대 값에 도달하므로 c을 4/3으로 설정할 수 있습니다.

관련 문제