Précision du rand() en PHP

Fermé
Idonthaveanypseudo - 7 janv. 2009 à 18:10
 Nixial - 7 janv. 2009 à 19:06
Bonjour,
J'essaie de débuger un petit programme que j'ai fait en php et j'ai l'impression que le problème ne vient pas de mon code mais de la fonction rand() de php. Pour faire une histoire courte, il s'agit d'un simulateur de combat pour un petit jeu php (https://www.pirates-caraibes.com/ ^^). J'y fais s'affronter deux personnages en spécifiant toutes leurs caractéristiques et à partir d'un recoupement de statistiques je peux définir lequel est plus fort, ce qui est entre autre utile pour vérifier la puissance de l'équipement.

Malheureusement, lorsque je fais combattre deux personnes identiques, sur 30,000 combats le jumeau (le deuxième combattant) a systématiquement l'avantage avec un écart de 1 à 1.5%. De plus, je relève quelques autres statistiques comme le nombre de coups portés, les dégâts moyens, le nombre de critique et le second a toujours un léger avantage à ce niveau également. On s'entend que sur 30,000 combats, le résultat devrait être égal ou sinon, ne pas favoriser qui que ce soit.

Ce qui me fait penser que le rand() est responsable est que, au tout début d'un combat, je détermine aléatoirement un jet d'attaque pour les deux adversaires.

jet1 = rand(0,100);
jet2=rand(0,100);

Si par contre j'intervertis les deux jets (donc calculer le jet2 d'abord), alors c'est le premier individu qui est systématiquement avantagé. Un peu comme si lorsqu'on faisait un random à la suite d'un autre, le second random avait 1% de chance de plus d'être un nombre plus élevé. C'est assez contraignant et je voulais savoir si vous pouviez confirmer cette théorie et me proposer une solution ...

Merci,
- Alex
A voir également:

1 réponse

Bonsoir,

Tu as essayé de faire un tout petit truc avec juste 2 rand (0,100) à part sans ton jeu.

Et de faire une boucle sur plusieurs milliers ?

Si tu vois une différence sans ton jeu alors oui ca vient de la fonction rand.

Sinon c'est que c'est ton jeu qui fait intervenir des petits paramètres qui altère l'équité.

Bonne chance !
1