choix des 5 nombres aleatoires distincts...

WRInaute impliqué
salut a tous

j'aimerais connaitre le code permettant de choisir 5 nombres DISTINCTS compris entre 1 et 30.
sans utiliser de while ou de boucle (sauf si on peut pas faire autrement)...

merci ;)
 
WRInaute impliqué
heu, sans utiliser de while, je veux bien, mais sans boucle je ne vois pas comment c'est faisable (et surtout, pourquoi ?)

sinon tu peux faire ça

// edit : oublie ce que je viens de dire mon code est foireux, je reviens tout de suite ^^
 
WRInaute accro
Bonjour,

Je pense qu'il y a un petit problème quand le générateur de nombres aléatoires donnent un nombre qui est déjà dans la liste. Version modifiée avec while (non testée):
Code:
function distinctRand($nb,$amp) { 
   $res = array(); 
   for($i=0 ; $i < $nb ; $i++) { 
      $nb = mt_rand(1,$amp); 
      while(in_array($nb,$res)) {
         $nb = mt_rand(1,$amp);
      }
      $res[$i] = $nb; 
   } 
   return $res; 
}
Jean-Luc
 
WRInaute impliqué
hop

Code:
function distinctRand($nb,$max,$min=1) {
   $res = array();
   for($i=0 ; $i < $nb ; $i++) {
      $n = mt_rand($min,$max);
      while(in_array($n,$res)) {
         $n = mt_rand($min,$max);
      }
      $res[$i] = $n;
   }
   return $res;
}

(ta fonction comme la mienne assignaient une nouvelle valeur à $nb à chaque passage)


$mesnombres = distinctRand(5,30); renverra donc un array $mesnombres[] contenant 5 valeurs de 1 à 30

// edit : et par coquetterie, j'ai rajouté un paramètre optionnel $min, na :p
 
WRInaute passionné
Code:
array_slice(array_diff(array_rand(array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30),6),array(0)),0,5);
 
Discussions similaires
Haut