파레토 분포는 자연을 많이 온다 확률 분포이다. 무한 평균과 같은 많은 특수 속성이 있습니다. 이 문제에서는이 분포에서 샘플링 한 숫자를 출력합니다.
파레토 분포와 동일하거나보다 큰 것으로 정의되는 x
확률로 1/x
모두, x
1 이상의.
따라서이 분포에서 샘플링 된 수는 확률 1의 경우 1보다 크거나 같고, 정확히 1/2의 확률로 2보다 크거나 같고, 확률이 정확히 1/3 인 3보다 크거나 같은 11.4의 확률과 정확히 1 / 11.4 등.
이 분포를 샘플링하기 때문에 프로그램이나 함수는 위의 확률로 입력을받지 않고 난수를 출력합니다. 그러나 부동 소수점 노출로 인해 프로그램이 위의 확률과 완벽하게 일치하지 않으면 괜찮습니다. 자세한 내용은 도전 과제의 하단을 참조하십시오.
(이를 정확하게하기 위해 알파 1과 하한 1을 갖는 파레토 분포라고합니다)
이 배포판에서 가져온 10 가지 예제는 다음과 같습니다.
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
이 중 5 개가 2 개 미만이고 5 개가 2 개 이상인 방법에 주목하십시오. 이것은 평균 결과이므로 물론 높거나 낮을 수 있습니다.
귀하의 답변은 부동 소수점 유형, 실수 유형 또는 사용하는 다른 것의 한도까지만 수정하면되지만 최소 3 자리의 정밀도로 숫자를 표현하고 최대 1,000,000까지 숫자를 표현할 수 있어야합니다 . 문제가 없는지 확실하지 않은 경우 언제든지 문의하십시오.
이것은 코드 골프입니다.
부정확성에 대한 세부 사항 :
각 범위
[a, b]
에1 <= a < b
대해 표본이 해당 범위에 속할 수있는 이상적인 확률은 다음과 같습니다1/a - 1/b
. 프로그램이 그 범위에 숫자를 생산하는 확률은 함께해야합니다0.001
의1/a - 1/b
.X
프로그램의 출력 인 경우 다음이 필요합니다|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.위의 규칙을 적용
a=1
하고b
충분히 크게 적용하면 프로그램에서 0.999 이상의 확률로 1 이상의 숫자를 출력해야합니다. 나머지 시간은 충돌, 출력Infinity
또는 기타 다른 작업을 수행 할 수 있습니다.
나는 형태의 기존 제출하는 것이 매우 확신 1/1-x
하거나 1/x
, x
임의의 부동입니다 [0, 1)
이나 (0, 1)
또는 [0, 1]
이 모든 요구 사항을 만족.