Traduction d'un algorithme de calcul

Résolu
reekoup007 Messages postés 44 Statut Membre -  
dna.factory Messages postés 29128 Statut Modérateur -
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.
A voir également:

1 réponse

Arm.7.ageddon Messages postés 42 Statut Membre 5
 
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
dna.factory Messages postés 29128 Statut Modérateur 1 619
 
la dernière est juste une application de la loi binominale
0