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é.

Afin de faire fonctionner ce script sur un ordinateur classique :

  1. Installez Python (http://www.python.org/download/releases/3.2.3/) dans la version vous concernant.
  2. Dans l'éditeur de Python (IDLE), créez un nouveau script, et copiez-collez le script précédent. Sauvegardez.
  3. Depuis l'IDLE, allez dans le menu Run puis Run module.
  4. Depuis le Shell Python qui s'ouvre, tapez :
survival(def_house, nb_zomb, nb_citizens)
  • def_house est votre défense personnelle
  • nb_zomb est le nombre de zombis débordant sur la ville
  • nb_citizens est le nombre de citoyens en ville

Le pourcentage est renvoyé sous forme d'une valeur entre 0 (mort systématique) et 1 (survie assurée).

hordes/attaque/survie.txt · Dernière modification: 15/08/2012 12:37 par tyler