Распределение Парето - это распределение вероятностей, которое встречается в природе. У этого есть много специальных свойств, таких как бесконечное среднее. В этом задании вы выведете число, выбранное из этого распределения.
Распределение Парето определяется как большее или равное x
с вероятностью 1/x
, для всех x
большее или равное 1.
Следовательно, число, выбранное из этого распределения, больше или равно 1 с вероятностью 1, больше или равно 2 с вероятностью точно 1/2, больше или равно 3 с вероятностью точно 1/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
достаточно большим, это тот случай, когда программа должна выводить число , большее или равное 1, по меньшей мере вероятностью 0,999. В остальное время может произойти сбой, выводInfinity
или что-то еще.
Я вполне уверен, что существующие представления в форме 1/1-x
или 1/x
, где x
случайное плавание в [0, 1)
или (0, 1)
или [0, 1]
, все удовлетворяют этому требованию.