Escriba un programa o función, que dada una probabilidad de éxito p , un número ny una cantidad de intentos m devuelve la posibilidad de al menos n éxitos de m intentos.
Su respuesta debe ser precisa al menos 5 dígitos después del decimal.
Casos de prueba:
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
Respuestas:
Jalea ,
1514 bytesLee m , n y p (en ese orden) como argumentos de línea de comandos. Pruébalo en línea!
Tenga en cuenta que este enfoque requiere O (2 m ) de tiempo y memoria, por lo que no es lo suficientemente eficiente para los casos de prueba donde m = 100 . En mi máquina, el caso de prueba (m, n, p) = (20, 13, 0.5) toma aproximadamente 100 segundos. Requiere demasiada memoria para el intérprete en línea.
Cómo funciona
fuente
Mathematica, 29 bytes
Toma entrada en el orden
n,m,p
. Mathematica es tan bueno que incluso te muestra el código:BetaRegularized
es la función beta incompleta regularizada .fuente
R,
3231 bytesedit - 1 byte cambiando a distribución beta (en la línea de @ Sp3000 Mathematica Answer)
fuente
Python, 57 bytes
La fórmula recursiva para los coeficientes binomiales, excepto el caso base
m==0
indica si el número restante de éxitos requeridosn
no es negativo, conTrue/False
for1/0
. Debido a su árbol de recursión exponencial, esto se detiene en entradas grandes.fuente
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 bytes
fuente
MATLAB,
7871 bytes¡Guardado 7 bytes gracias a Luis Mendo!
La función arrayfun no es divertida, pero no he encontrado una manera de deshacerme de ella ...
fuente
Pyth, 26 bytes
Pruébalo en línea!
Utiliza distribución binomial acumulativa estándar.
fuente
Pyth, 20 bytes
Pruébalo en línea!
Nota: CG es un número muy grande que el intérprete no puede manejar. Por lo tanto, el número de pruebas se ha reducido a ^ T3, que es mil. Por lo tanto, el enlace produce un resultado inexacto.
Utiliza un enfoque probabilístico puro.
fuente
JavaScript (ES7), 82 bytes
¡Guardado 1 byte usando
reduce
! Explicación:fuente
Octava, 26 bytes
Esta es una función anónima. Para usarlo, asígnelo a una variable.
Pruébalo aquí .
fuente
MATL , 23 bytes
Las entradas están en el orden
m
,n
,p
.Pruébalo en línea!
Esto hace un cálculo directo sumando los términos de
n
am
de la función binomial de probabilidad (masa) .fuente
Jalea ,
1817 bytesLee n , m y p (en ese orden) como argumentos de línea de comandos. Pruébalo en línea!
fuente
TI-Basic, 17 bytes
Preciso a 10 decimales, se puede ajustar en cualquier lugar de 0-14 decimales con más código.
fuente
Haskell, 54 bytes
Define una función
(%)
. Llámalo como(%) 0.4 2 3
.fuente
Mathematica, 48 bytes
Utiliza la fórmula probabilidad de distribución binomial para calcular la probabilidad de k éxitos para k de n a m . Maneja los casos límite utilizando una suma simbólica donde s es una variable simbólica para la probabilidad que luego se reemplaza con el valor real p . (Dado que s 0 = 1 pero 0 0 es indeterminado).
fuente