Escreva um programa ou função que, com uma probabilidade de sucesso p , um número n e um número de tentativas m retorne a chance de pelo menos n sucessos de m tentativas.
Sua resposta deve ser precisa com pelo menos 5 dígitos após o decimal.
Casos de teste:
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
Respostas:
Geléia ,
1514 bytesLê m , n e p (nessa ordem) como argumentos da linha de comando. Experimente online!
Observe que essa abordagem requer tempo e memória de O (2 m ) , portanto, não é suficientemente eficiente para os casos de teste em que m = 100 . Na minha máquina, o caso de teste (m, n, p) = (20, 13, 0,5) leva aproximadamente 100 segundos. Requer muita memória para o intérprete online.
Como funciona
fonte
Mathematica, 29 bytes
Recebe entrada na ordem
n,m,p
. O Mathematica é tão bom que até aplica seu código para você:BetaRegularized
é a função beta incompleta regularizada .fonte
R,
3231 byteseditar - 1 byte alternando para a distribuição beta (nas linhas da resposta do @ Sp3000 Mathematica)
fonte
Python, 57 bytes
A fórmula recursiva para os coeficientes binomiais, exceto o caso base,
m==0
indica se o número restante de sucessos necessáriosn
é não-negativo, comTrue/False
para1/0
. Por causa de sua árvore de recursão exponencial, isso interrompe grandes entradas.fonte
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 bytes
fonte
MATLAB,
7871 bytesGuardado 7 bytes graças a Luis Mendo!
A função arrayfun não é divertida, mas não encontrei uma maneira de me livrar dela ...
fonte
Pitão, 26 bytes
Experimente online!
Usa distribuição binomial cumulativa padrão.
fonte
Pitão, 20 bytes
Experimente online!
Nota: CG é um número muito grande que o intérprete não pode manipular. Portanto, o número de tentativas foi reduzido para ^ T3, que é mil. Portanto, o link produz um resultado impreciso.
Usa abordagem probabilística pura.
fonte
JavaScript (ES7), 82 bytes
Salvo 1 byte usando
reduce
! Explicação:fonte
Oitava, 26 bytes
Esta é uma função anônima. Para usá-lo, atribua-o a uma variável.
Experimente aqui .
fonte
MATL , 23 bytes
Entradas estão na ordem
m
,n
,p
.Experimente online!
Isso faz um cálculo direto somando os termos de
n
am
da função de probabilidade binomial (massa) .fonte
Geléia ,
1817 bytesLê n , m e p (nessa ordem) como argumentos da linha de comando. Experimente online!
fonte
TI-Basic, 17 bytes
Precisas para 10 decimais, podem ser ajustadas de 0 a 14 decimais com mais código.
fonte
Haskell, 54 bytes
Define uma função
(%)
. Chame assim(%) 0.4 2 3
.fonte
Mathematica, 48 bytes
Usa a fórmula de probabilidade de distribuição binomial para calcular a chance de k sucessos de k de n a m . Manipula os casos de borda usando uma soma simbólica em que s é uma variável simbólica para a probabilidade que é posteriormente substituída pelo valor real p . (Como s 0 = 1, mas 0 0 é indeterminado.)
fonte