Розподіл Парето є розподіл ймовірностей , що приходить багато в природі. Він має безліч спеціальних властивостей, таких як нескінченне середнє. У цьому виклику ви виведете число, відібране з цього розподілу.
Розподіл Парето визначається як більший або рівний 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]
, все задовольняють цю вимогу.