Twinpedia :: hordes:attaque:survie

Chance de survie

Les chances de survie sont déterminées à partir de prévisions des attaques.

En fonction du nombre de zombies maximum et minimum qui participent à l'attaque, il est possible de définir une probabilité de survie. Elle prend en compte la défense de la ville, le nombre de citoyens et la défense individuelle du citoyen.

Algorithmie

Loi Binomiale

Code Python (python 3.x)

# 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)

Le calcul de la combinatoire implique la manipulation d'entier extrêmement grand. Dans le cas de python cela passe car ce langage n'est pas typé.