Si je comprends bien, ton besoin n'est pas équiprobable. La faim des Astyrion de 1 à 6 se calcule ainsi : tu jettes 1 dé à 100 faces, tu regardes ta table de résultat et tu applique le modificateur. Dans ton cas précis, ça laisse une forte probabilité pour les valeurs 1-2-3 (80% de chance) contre 4-5-6 à 20% de chance. Ensuite, tu soustrais (ou ajoute) cette valeur à une variable indiquant l'état de faim du perso.
Y'a 20 minutes il avait 10 points de faim. Je fais alors un nouveau tirage via crontab : 83 ce qui équivaut à une augmentation de 4 : il a maintenant 14 points de faim.
Dis moi si je me trompe dans cette reformulation orientée de ton contexte.
Perso, je vois plusieurs méthodes.
Si tu cherches un optimum d'algo je te propose celui-ci :
- Mettre en mémoire ton tableau de correspondance.
- Récupérer dans un tableau la liste de tout les PNJ trié par race (id_png, id_race, Faim |Hygiène| Santé | Repos | Loisir| Zen)
- Je fais un tableau contenant 6 * Nb PNJ valeur aléatoires de 1 à 100
- Pour chaque groupe de PNJ par race, je calcule dans un tableau la valeur de modification grâce au tableau de correspondance
- Je Update toutes les lignes. Là 2 cas :
- soit PNJ par PNJ,
- soit je regroupe par caractéristique modifié :
On récupère en PHP la liste de tous les PNJ pour lesquels on a une augmentation faim de 1 :
Un Update faim = faim +1 where id_PNJ IN (122, 123, 124, ...)
Puis on récupère en PHP la liste de tous les PNJ pour lesquels on a une augmentation faim de 2 :
Un Update faim = faim + 2 where id_PNJ IN (125, 126, 127, ...)
Mon choix lors du UPDATE dépendra beaucoup du fait d'avoir un serveur PHP puissant ou un serveur SQL puissant... La première solution étant très gourmande en terme SQL, la deuxième (que je privilégie) étant moyennement gourmant en terme de PHP.
Kéké
PS : après réflexion, il n'est pas utile de trier par race dans la 2eme étape.
Y'a 20 minutes il avait 10 points de faim. Je fais alors un nouveau tirage via crontab : 83 ce qui équivaut à une augmentation de 4 : il a maintenant 14 points de faim.
Dis moi si je me trompe dans cette reformulation orientée de ton contexte.
Perso, je vois plusieurs méthodes.
Si tu cherches un optimum d'algo je te propose celui-ci :
- Mettre en mémoire ton tableau de correspondance.
- Récupérer dans un tableau la liste de tout les PNJ trié par race (id_png, id_race, Faim |Hygiène| Santé | Repos | Loisir| Zen)
- Je fais un tableau contenant 6 * Nb PNJ valeur aléatoires de 1 à 100
- Pour chaque groupe de PNJ par race, je calcule dans un tableau la valeur de modification grâce au tableau de correspondance
- Je Update toutes les lignes. Là 2 cas :
- soit PNJ par PNJ,
- soit je regroupe par caractéristique modifié :
On récupère en PHP la liste de tous les PNJ pour lesquels on a une augmentation faim de 1 :
Un Update faim = faim +1 where id_PNJ IN (122, 123, 124, ...)
Puis on récupère en PHP la liste de tous les PNJ pour lesquels on a une augmentation faim de 2 :
Un Update faim = faim + 2 where id_PNJ IN (125, 126, 127, ...)
Mon choix lors du UPDATE dépendra beaucoup du fait d'avoir un serveur PHP puissant ou un serveur SQL puissant... La première solution étant très gourmande en terme SQL, la deuxième (que je privilégie) étant moyennement gourmant en terme de PHP.
Kéké
PS : après réflexion, il n'est pas utile de trier par race dans la 2eme étape.