choix des 5 nombres aleatoires distincts...

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

sebnutt
WRInaute accro
WRInaute accro
 
Messages: 1308
Inscription: Mer Déc 10, 2003 17:25

choix des 5 nombres aleatoires distincts...

Message le Mar Nov 14, 2006 12:59

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 ;)


La Chaise sauvage
WRInaute passionné
WRInaute passionné
 
Messages: 691
Inscription: Lun Avr 11, 2005 10:37

Message le Mar Nov 14, 2006 13:31

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 ^^


jeanluc
WRInaute accro
WRInaute accro
 
Messages: 2658
Inscription: Lun Mai 03, 2004 14:48

Message le Mar Nov 14, 2006 13:40

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: Tout sélectionner
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


La Chaise sauvage
WRInaute passionné
WRInaute passionné
 
Messages: 691
Inscription: Lun Avr 11, 2005 10:37

Message le Mar Nov 14, 2006 13:43

non, ça ne renvoie toujours pas 5 valeurs, mais un nombre aléatoire de valeurs... hmm


La Chaise sauvage
WRInaute passionné
WRInaute passionné
 
Messages: 691
Inscription: Lun Avr 11, 2005 10:37

Message le Mar Nov 14, 2006 13:45

hop

Code: Tout sélectionner
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


Serious
WRInaute accro
WRInaute accro
 
Messages: 2438
Inscription: Lun Nov 21, 2005 18:29

Message le Mar Nov 14, 2006 20:01

Code: Tout sélectionner
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);

oxman
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 118
Inscription: Lun Juin 21, 2004 1:52

Message le Mar Nov 14, 2006 20:16

Lol marrant ça =)

sebnutt
WRInaute accro
WRInaute accro
 
Messages: 1308
Inscription: Mer Déc 10, 2003 17:25

Message le Mar Nov 14, 2006 22:42

nickel...c'est exactement ce dont j'avais besoin...
en encore plus simple que ce que l'on m'avait proposé


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités