Écrivez un programme ou une fonction, qui étant donné une probabilité de succès p , un nombre n et un nombre d'essais m renvoie la chance d' au moins n succès sur m essais.
Votre réponse doit être précise à au moins 5 chiffres après la décimale.
Cas de test:
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
Réponses:
Gelée ,
1514 octetsLit m , n et p (dans cet ordre) comme arguments de ligne de commande. Essayez-le en ligne!
Notez que cette approche nécessite O (2 m ) de temps et de mémoire, elle n'est donc pas assez efficace pour les cas de test où m = 100 . Sur ma machine, le cas de test (m, n, p) = (20, 13, 0,5) prend environ 100 secondes. Cela nécessite trop de mémoire pour l'interprète en ligne.
Comment ça fonctionne
la source
Mathematica, 29 octets
Prend entrée dans l'ordre
n,m,p
. Mathematica est si bon qu'il joue même votre code pour vous:BetaRegularized
est la fonction bêta incomplète régularisée .la source
R,
3231 octetsedit - passage d'un octet à la distribution bêta (dans le sens de @ Sp3000 Mathematica Answer)
la source
Python, 57 octets
La formule récursive pour les coefficients binomiaux, à l'exception du cas de base,
m==0
indique si le nombre restant de succès requisn
n'est pas négatif, avecTrue/False
pour1/0
. En raison de son arbre de récursivité exponentielle, cela se bloque sur de grandes entrées.la source
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 octets
la source
MATLAB,
7871 octets7 octets enregistrés grâce à Luis Mendo!
La fonction arrayfun n'est pas amusante, mais je n'ai pas trouvé de moyen de m'en débarrasser ...
la source
Pyth, 26 octets
Essayez-le en ligne!
Utilise la distribution binomiale cumulative standard.
la source
Pyth, 20 octets
Essayez-le en ligne!
Remarque: CG est un très grand nombre que l'interpréteur ne peut pas gérer. Par conséquent, le nombre d'essais a été abaissé à ^ T3, soit mille. Par conséquent, le lien produit un résultat inexact.
Utilise une approche probabiliste pure.
la source
JavaScript (ES7), 82 octets
1 octet enregistré en utilisant
reduce
! Explication:la source
Octave, 26 octets
Il s'agit d'une fonction anonyme. Pour l'utiliser, affectez-le à une variable.
Essayez-le ici .
la source
MATL , 23 octets
Les entrées sont dans l'ordre
m
,n
,p
.Essayez-le en ligne!
Cela fait un calcul direct sommant les termes de
n
àm
de la fonction de probabilité binomiale (masse) .la source
Gelée ,
1817 octetsLit n , m et p (dans cet ordre) comme arguments de ligne de commande. Essayez-le en ligne!
la source
TI-Basic, 17 octets
Précis à 10 décimales, peut être ajusté de 0 à 14 décimales avec plus de code.
la source
Haskell, 54 octets
Définit une fonction
(%)
. Appelez ça comme(%) 0.4 2 3
.la source
Mathematica, 48 octets
Utilise la formule de la probabilité de distribution binomiale pour calculer la probabilité de k succès pour k de n à m . Gère les cas limites en utilisant une somme symbolique où s est une variable symbolique pour la probabilité qui est ensuite remplacée par la valeur réelle p . (Puisque s 0 = 1 mais 0 0 est indéterminé.)
la source