IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Augmentation de la population


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut Augmentation de la population
    Bonjour

    Je suis en train de faire un jeu en ligne et je doit calculer l'augmentation de la population.

    En gros je fais une fonction de ce style :

    nouvelle population = anciene population + (anciene population * coef)

    le probleme est que je doit calculer de combien a augmenter la population lorsque la personne se connecte ... mais l'algo n'est pas bon du tout ...
    Si la personne se connecte une fois dans la journée ou 10 fois cela ne fait pas du tout le même resultat ...

    Un exemple ecris en python à l'arrache (pas la peine de commenter le code ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    population_base = 1000
    coef = 0.5
    seconds_by_day = 86400
     
    print 1000. + (1000. * coef * 86400 / seconds_by_day)
     
    a =  1000 + (1000 * coef * 8640 / seconds_by_day)
    b = a + (a * coef * 8640 / seconds_by_day)
    c = b + (b * coef * 8640 / seconds_by_day)
    d = c + (c * coef * 8640 / seconds_by_day)
    e = d + (d * coef * 8640 / seconds_by_day)
    f = e + (e * coef * 8640 / seconds_by_day)
    g = f + (f * coef * 8640 / seconds_by_day)
    h = g + (g * coef * 8640 / seconds_by_day)
    i = h + (h * coef * 8640 / seconds_by_day)
    j = i + (i * coef * 8640 / seconds_by_day)
     
    print j
    les resultats sont les suivant :

    Arf c'est pas top une personne qui se connecte beaucoup a sa population qui augmente plus vite !! quoi que si y a de la pub sur le site ca peut recompenser ceux qui viennent beaucoup mdr ... mais non !
    Donc je suis la pour vous demander quel type de fonction je pourrais utiliser dans ce cas que quelque soit le nombres d'appel cela donne le même résultat ... (surement une exponentiel ?)

    merci

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Bon j'ai reussi a faire un truc finalement

    pop2 = e^(deltaT * ln(coef)+ ln(pop1))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import math
     
    pop = math.exp(1 * math.log(1.005) + math.log(1000.))
     
    print pop
     
    pop1 = math.exp(0.1 * math.log(1.005) + math.log(1000.))
    pop2 = math.exp(0.1 * math.log(1.005) + math.log(pop1))
    pop3 = math.exp(0.1 * math.log(1.005) + math.log(pop2))
    pop4 = math.exp(0.1 * math.log(1.005) + math.log(pop3))
    pop5 = math.exp(0.1 * math.log(1.005) + math.log(pop4))
    pop6 = math.exp(0.1 * math.log(1.005) + math.log(pop5))
    pop7 = math.exp(0.1 * math.log(1.005) + math.log(pop6))
    pop8 = math.exp(0.1 * math.log(1.005) + math.log(pop7))
    pop9 = math.exp(0.1 * math.log(1.005) + math.log(pop8))
    pop10 = math.exp(0.1 * math.log(1.005) + math.log(pop9))
     
    print pop10

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par anthyme
    En gros je fais une fonction de ce style :

    nouvelle population = anciene population + (anciene population * coef)
    U0 = Cste = population_base
    Un+1 = Un + Un*coef = (1+coef)*Un

    C'est une suite geometrique de raison (1+Coef). Sont terme general est donc:

    Un = U0 * raison^n

    Comme ca, plus d'erreur de calcul:

    pop(durée_en_jour) = population_base * (1+coef)^durée_en_jour

    pop(0) = 1000 * (1+0.5)^0 = 1000
    pop(0.1) = 1000 * (1+0.5)^0.1 = 1041
    pop(0.5) = 1000 * (1+0.5)^0.5 = 1224
    pop(0.8) = 1000 * (1+0.5)^0.8 = 1383
    pop(1) =1000 * (1+0.5)^1 = 1500
    ...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [struts] BeanUtils.populate
    Par otminou dans le forum Struts 1
    Réponses: 4
    Dernier message: 23/09/2007, 18h27
  2. [Struts]Bean populate & array index out of bound
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/11/2006, 11h03
  3. [MFC] Augmentation en mémoire
    Par pitch21 dans le forum MFC
    Réponses: 21
    Dernier message: 20/07/2004, 13h01
  4. [Struts][Tomcat ] HTTP 500 - BeanUtils.populate (Eclipse)
    Par pjfly dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 10/04/2004, 10h03
  5. Augmentation de la taille de la base
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/02/2004, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo