choisir 10valeur au hasard distinct

Eléphanteau du PHP | 37 Messages

27 oct. 2006, 22:48

Bonjours a tous !! :)

Voila j'aimerai savoir comment je pourrai chercher 10 nombre au hasard distinct ?
J'ai vu la fonction rand(min, max) mais je vois pas trop comment l'appliquer pour mon cas :?
Si quelqun a la soluce :P

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 22:57

Bonsoir,

Une méthode parmis d'autres,
Tu crées un tableau qui contiendra tes nombres
Tu crées une boucle qui va générer un nombre à chaque passage. Tu vérifies que le nombre n'est pas dans ton tableau, si c'est le cas tu l'insères, sinon tu "reboucles". Ta boucle s'arretera quand ton tableau aura 10 éléments.
Une fois le tableau remplit tu le parcours pour récupérer les valeurs.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 37 Messages

28 oct. 2006, 22:14

humm apres pas mal de recherche j'en suis arrivé a un raisonement mais je sais pas pourquoi sa marche pas :?

Code : Tout sélectionner

while ($var<$nombre_bombe){ $aleatoire=Gligne($ligne2, $colonne2); $case=split (" ", $aleatoire); if (empty ($tableau[$case[0]][$case[1]])){ $tableau[$case[0]][$case[1]]=-1; $var=$var+1;}else { $var=$var-1;} } return $tableau; }
Donc voila mon raisonnement
-Je regarde si la case de mon tableau est vide
si elle est vide j'avance de 1 dans mes recherches de variable aleatoire, sinon je recule de 1 pour recommencer la recherche

Mais sa marche pas :'(

Solution? :(

Mammouth du PHP | 19672 Messages

28 oct. 2006, 22:45

Si tu as un nombre minimum et un nombre maximum entre lesquels tu veux choisir dix valeurs aléatoires, voici une méthode :
-1- créer un tableau indexé conteant toutes les valeurs entre le minimum et le maximum avec range();
-2- mélange le contenu du tableau avec shuffle();
-3- ettectue une boucle for() sur 10 tours pour récupérer les 10 premières valeurs, affiche ça et observe le résultat ;)

Exemple pratique :
<?php
$nbrs = range(1, 500);
shuffle($nbrs);
echo("<p>");
for($i = 0; $i < 10; $i++)
{
    echo($nbrs[$i] ."<br />");
}
echo("</p>");
?>
Va afficher par exemple 10 numéros au hasard entre 1 et 500 :
361
119
225
398
100
218
354
56
488
369
Si tu les veux classés, alors récupères les d'abord dans un tableau intermédiaire, classe ce tableau intermédiaire avec sort() et ensuite utilise-les.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: