Comment puis-je calculer efficacement la fonction de distribution cumulative binomiale?

Disons que je sais que la probabilité d'un "succès" de P. je lance le test de N fois, et je vois réussites. Le test est semblable à jeter un inégalement pondérée de la pièce de monnaie (peut-être les chefs est un succès, la queue est un échec).

Je veux savoir approximativement la probabilité de voir la S des succès, ou un certain nombre de réussites moins susceptibles que les réussites.

Ainsi, par exemple, si P est de 0,3, ce qui N est de 100, et j'ai 20 réussites, je suis à la recherche de la probabilité d'obtenir 20 ou moins succès.

Si, sur l'autre n'avait, P est de 0,3, ce qui N est de 100, et j'obtiens 40 succès, je suis à la recherche de la probabilité d'obtenir 40 nos plus de succès.

Je suis conscient que ce problème est lié à la découverte de la région en vertu d'une loi binomiale courbe, cependant:

  1. Mes maths-fu n'est pas à la tâche de traduire cette connaissance en code efficace
  2. Bien que je comprenne un binôme courbe devrait donner un résultat exact, j'ai l'impression qu'il serait intrinsèquement inefficace. Une méthode rapide pour calculer un résultat approximatif suffirait.

Je tiens à souligner que ce calcul doit être rapide, et devrait idéalement être déterminés avec le standard de 64 ou 128 bits à virgule flottante calcul.

Je suis à la recherche d'une fonction qui prend P, S et N et renvoie une probabilité. Comme je suis plus familier avec le code de la notation mathématique, je préfère que toutes les réponses employer des pseudo-code ou code.

source d'informationauteur sanity