Напишите программу или функцию, которые с учетом вероятности успеха p , числа n и количества испытаний m возвращают шанс по крайней мере n успехов из m испытаний.
Ваш ответ должен быть точным, по крайней мере, до 5 цифр после десятичной дроби.
Тестовые случаи:
0.1, 10, 100 -> 0.54871
0.2, 10, 100 -> 0.99767
0.5, 13, 20 -> 0.13159
0.5, 4, 4 -> 0.06250
0.45, 50, 100 -> 0.18273
0.4, 50, 100 -> 0.02710
1, 1, 2 -> 1.00000
1, 2, 1 -> 0.00000
0, 0, 1 -> 1.00000
0, 0, 0 -> 1.00000
0, 1, 1 -> 0.00000
1, 1, 0 -> 0.00000
Ответы:
Желе ,
1514 байтЧитает m , n и p (в этом порядке) в качестве аргументов командной строки. Попробуйте онлайн!
Следует отметить , что такой подход требует O (2 м ) времени и памяти, так что это не вполне достаточно эффективны для тестовых случаев , когда т = 100 . На моей машине контрольный пример (m, n, p) = (20, 13, 0,5) занимает примерно 100 секунд. Это требует слишком много памяти для онлайн-переводчика.
Как это работает
источник
Mathematica, 29 байт
Вводит заказ в порядке
n,m,p
. Mathematica настолько хороша, что даже играет в ваш код:BetaRegularized
является регуляризованная неполной бета - функция .источник
R,
3231 байтedit - 1-байтовое переключение на бета-распределение (в соответствии с @ Sp3000 Mathematica Answer)
источник
Python, 57 байт
Рекурсивная формула для биномиальных коэффициентов, за исключением базового случая,
m==0
указывает, является ли оставшееся количество требуемых успеховn
неотрицательным, сTrue/False
for1/0
. Из-за его дерева экспоненциальной рекурсии это останавливается на больших входах.источник
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 байта
источник
MATLAB,
7871 байтСэкономили 7 байт благодаря Луису Мендо!
Функция arrayfun неинтересна, но я не нашел способа от нее избавиться ...
источник
Pyth, 26 байт
Попробуйте онлайн!
Использует стандартное кумулятивное биномиальное распределение.
источник
Pyth, 20 байтов
Попробуйте онлайн!
Примечание: CG - очень большое число, с которым переводчик не может справиться. Поэтому количество испытаний было уменьшено до ^ T3, что составляет тысячу. Таким образом, ссылка дает неточный результат.
Использует чисто вероятностный подход.
источник
JavaScript (ES7), 82 байта
Сохранено 1 байт с помощью
reduce
! Объяснение:источник
Октава, 26 байт
Это анонимная функция. Чтобы использовать его, присвойте его переменной.
Попробуй это здесь .
источник
MATL , 23 байта
Входы в порядке
m
,n
,p
.Попробуйте онлайн!
Это делает прямое вычисление, суммируя члены от
n
доm
функции биномиальной вероятности (массы) .источник
Желе ,
1817 байтЧитает n , m и p (в этом порядке) в качестве аргументов командной строки. Попробуйте онлайн!
источник
TI-Basic, 17 байтов
Точность до 10 десятичных знаков, может быть скорректирована в любом месте от 0-14 десятичных знаков с большим количеством кода.
источник
Haskell, 54 байта
Определяет функцию
(%)
. Назовите это как(%) 0.4 2 3
.источник
Mathematica, 48 байтов
Использует формулу вероятности биномиального распределения для расчета вероятности k успехов для k от n до m . Обрабатывает крайние случаи, используя символическую сумму, где s - символическая переменная для вероятности, которая впоследствии заменяется фактическим значением p . (Так как s 0 = 1, но 0 0 является неопределенным.)
источник