2016-07-30 7 views
2

문제가 있습니다. 파이썬에서 Pr [X ≥ k] = 1/k와 같은 난수 X가 필요한 알고리즘을 구현해야합니다. 나에게이 정확한 값을 줄 수있는 배포판이 존재하는지 또는 간단한 무작위 파이썬 라이브러리를 사용하여이 무작위 생성기를 구현할 수있는 방법이 있는지 나는 모른다. 이것을 할 수있는 방법이 있습니까? 당신의 도움에 미리 감사드립니다!특정 배포판을 따르는 난수

+0

정확히 무엇을 하려는지 확실하지 않음 – wjk2a1

+0

안녕하세요! 내가 설명한 분포를 따르는 난수 X를 생성하려고합니다. 문제가 요구하는 것은 분포에 따라 X를 선택하는 것입니다. Pr X ≥ k = 1/k – Marco

+0

이게 당신이 찾고있는 것입니다 : http : //stackoverflow.com/a/4266312/2348704 – oat

답변

6

쉬운 시도

X = 1.0/random.random() 

하지만, random.random()가 0의 값을 가질 수 있도록하고, 그래서이 0으로 나누기 오류가 발생할 수있다. 값은 문서에있어서, 1.0, 그래서이 유통

X = 1.0/(1.0 - random.random()) 

를 사용 결코

잠 [X ≥ K] = 잠 [0 < 1/X ≤ 1/K]

잠 = [0 1 < - random.random() ≤ 1/K]

잠 = [1 - 1/K에서의 random.random ≤() < 1]

= 1 - (1 - 1/k) {이후 DOM()가 0,1 [균일)와 [1-1/k는, 1) 인 서브 구간}

= 1/K

(내가 여기 MathJax를 사용할 수 있으면 좋겠다!) 물론, 이 모든 것은 k ≥ 1이라고 가정합니다. 또한 X는 1에서 + 무한대의 연속 무작위 변수로 가정했습니다. X가 양의 정수이면 (따라서 k도 양의 정수), 내가 준 수식의 바닥을 가져옵니다.

+0

예, 그게 내가 필요한 것입니다! 고마워요! – Marco

-2

필요한 것은 임의의 숫자를 생성하는 균일 한 난수 생성기입니다. 이러한 숫자는이어서 분포로 변환 할 수있다 (예를 들면 곱셈) https://docs.python.org/3.5/library/random.html

https://docs.python.org/2/library/random.html
이러한 난수를 생성 할 수있다. 내가 얻지 못하는 것은 귀하의 배포판입니다. 어떻게 그래픽으로 보입니까? 그것을 나타내는 함수가 있다면 그것을 사용하여 난수를 곱하십시오.

1

로리는 정답으로 끝났지 만, 정당화하는 수학은 건설적인 것이 아닙니다 — 답변을 얻는 방법을 보여주지는 않지만 그의 주장이 정확하다는 것을 보여줍니다. 다음은 답을 얻기 위해 확률의 기본 규칙을 사용합니다.

Pr{X ≥ k} = 1 - Pr{X < k} 

X 연속 확률 변수 인 경우,

Pr{X < k} = Pr{X ≤ k} 

오른편 그래서,

Pr{X ≥ k} = 1 - F(k) = 1/k 
F(k) = 1 - 1/k 

누적 분포 함수 F X (K)의 정의이며 그런 다음 by the inversion theoremU, 균등 (0,1) RV와 같게 설정할 수 있으며 k :

U = 1 - 1/k 
1 - U = 1/k 
k = 1/(1 - U) 

U 용 난수 생성기를 사용하면 완료됩니다. Rory가 지적했듯이 이것은 k ≥ 1에 대해서만 유효합니다. 그렇지 않으면 CDF를 초과하게됩니다.

+1

나는 수학이 어떻게 잘못되었는지 보지 못한다. 나는 그것이 단 한 단계 만 보여주는 간단하다는 것을 인정하지만, 나머지는 확률을 알면 분명하다고 생각했기 때문이었다. 내 평등에 더 많은 조치를 취하도록 동기를 부여했지만 아무것도 변경되지 않았습니다. 내 박람회가 맞다고 동의합니까? (나는 아직도 약간의 세부 사항을 제외했다. 물론 나는 pedantic이되고 싶지 않다.) –

+1

@RoryDaulton 두 번째 라인은 X가 무엇인지에 대한 당신의 주장에 전제된다. 개연성. 귀하의 주장이 사실 일 수 있기 때문에 수학은 거기서부터 작동하지만, 그것은 주장이 선험적으로 유효한 것은 아닙니다. 대조적으로, 나의 파생은 당신의 주장 된 결과로 끝날 확률의 잘 알려진 규칙을 따른다. – pjs

+1

분명히, 당신은 당신이 원하는 목표에서 표현을 도출했다는 것을 의미하는 반면, 나의 표현이 목표를 충족 시킨다는 것을 보여줬다. 우리는 반대 방향으로 일했으나 그것이 내 수학을 "무효화"하지는 않습니다. 두 가지 방법의 차이점에 대한 좋은 토론은 George Polya의 * How to Solve it *을 참조하십시오. –

관련 문제