Traduction d'un algorithme de calcul

Résolu
Bonjour,

Étant un débutant de Python, je ne suis pas en mesure de traduire et de comprendre l'intégralité de l'algorithme suivant :

# fonction factorielle
def fact(n):
    res = 1
    for i in range(1,n+1):     res *= i
    return res
 
# fonction combinatoire
def combin(n,k):
    x, y = 1, 1
    for i in range(n-k+1,n+1): x*=i # arrangement
    for i in range(2,k+1):     y*=i # permutation
    return x//y
 
# fonction binomiale
def binomiale(k, n, p):
    return combin(n,k) * p**k * (1-p)**(n-k)
 
# fonction somme binomiale
def sumbinomiale(k, n, p):
    res = 0
    for i in range(k + 1):
        b=binomiale(i, n, p)
        if b==0: break
        res += b
    return res
 
# fonction % de survie
def survival(def_house, nb_zomb, nb_citizens):
    if def_house >= nb_zomb or nb_zomb == 0:
        return 1.
    else:
        return sumbinomiale(def_house, nb_zomb, 1./nb_citizens)


Je souhaiterais comprendre ce que réalise l'algorithme, si possible le traduire en liste de calculs mathématiques.

Merci de votre aide,

Paul.


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

  1. https://fr.wikipedia.org/wiki/Factorielle
    https://fr.wikipedia.org/wiki/Combinaison_%28math%C3%A9matiques%29#Calcul_du_nombre_de_combinaisons
    https://fr.wikipedia.org/wiki/Loi_binomiale

    Pour les deux derniers, je donne ma langue au chat.. mais il semblerait que ça soit pour calculer une probabilité de survie de citoyens, dans une maison infestée de zombies :)
    1
    1. Modérateur
      la dernière est juste une application de la loi binominale
      0