Salut,
@Pekka :
Il est nécessaire de trier le tableau dans l'ordre croissant car sinon :
Pour reprendre ton tableau :
$tab[0] = 5;
$tab[1] = 10;
$tab[2] = 100;
$tab[3] = 1000;
$tab[4] = 900;
Le code va tirer un nombre aléatoire entre 0 et la somme de toutes les valeurs du tableau.
Ensuite il parcours chaque élément de ce dernier et regarde si le nombre aléatoire est inférieur au cumul :
Joueur 0 0+5 = 5
Joueur 1 5+10 = 15
Joueur 2 15+100 = 115
Joueur 3 115+1000 = 1115
Joueur 4 1115+900 = 2015
Pour un nombre aléatoire de 2000 c'est le joueur 4 qui va gagner, hors ça devrait être le 3 (on ne compare pas sur une plage mais sur l'éloignement de zéro ($seek))
En ordonnant préalablement le tableau :
Joueur 0 0+5 = 5 (2000 > 5 => perdu)
Joueur 1 5+10 = 15 (2000 > 15 => perdu)
Joueur 2 15+100 = 115 ...
Joueur 4 115+900 = 1015 (2000 > 1015 => perdu)
Joueur 3 1015+1000 = 2015 ((2000 < 2015 => gagné)
@Arto :
rand retourne un nombre pseudo aléatoire entre 0 et la plus grande valeur possible (dépendante du système), non ?
Ainsi :
Code PHP :
<?php
$total = 2015;
$rdNumber = rand() * $total;
// => 47638630
$rdNumber = mt_rand(0, $total);
// => 1670
?>
Cordialement,
Kohntark -