Bonjour, je voudrais savoir comment faire pour generer un nombre aleatoire entre 1 et 3
et entre 10 et 25
Bonjour, je voudrais savoir comment faire pour generer un nombre aleatoire entre 1 et 3
et entre 10 et 25
Bonjour,
Tu peux faire comme ça :
mt_rand() est plus rapide et renvoi un résultat plus aléatoire que rand().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $choix = mt_rand(0,2); if($choix < 1) { $nombre = mt_rand(1, 3); } else { $nombre = mt_rand(10, 25); }
Encore plus simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php $nombre_aleatoire_1_3 = rand(1, 3); $nombre_aleatoire_10_25 = rand(10, 25); echo "Nombre aléatoire entre 1 et 3 : ".$nombre_aleatoire_1_3."<br />"; echo "Nombre aléatoire entre 10 et 25 : ".$nombre_aleatoire_10_25; ?>
En générant une table et en utilisant array_rand tout simplement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $bornes = array(array(1,3), array(10,25)); $table = array(); foreach ($bornes as $borne) { $table = array_merge($table, array_keys($a = array_fill($borne[0], $borne[1] - $borne[0] +1, 0))); } var_dump(array_rand($table)); var_dump(array_rand($table)); var_dump(array_rand($table)); var_dump(array_rand($table));
Encore plus simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $nombre = (mt_rand(0,2)<1)?mt_rand(1, 3):mt_rand(10, 25);
Il suffit de moduler la pondération afin d'établir un équilibre de probabilités :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $nombre = (mt_rand(1,18)<3)?mt_rand(1, 3):mt_rand(10, 25);
Sinon : (un peu lourd mais bon)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 do { $nombre = mt_rand(1,25); } while ($nombre < 10 and $nombre > 3);
comme ça aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $range = array_merge(range(1, 3), range(10, 25)); $nb = $range[array_rand($range)];
Je ne suis pas d'accord : le 1 a autant de chance de sortir que le 25 avec la dernière proposition de Avalion...et comme je l'ai fait remarque plus haut c'est pas vraiment aléatoire
Edit : Sorry, j'avais pas vu que ta remarque concerne le post de Philodido...
Oui, tu as raison ; d'ailleurs autant ma remarque est vraie pour ta proposition, autant elle est fausse pour celle de Avalion.Ça ne concernait pas mon post. Regarde le "@Avalion" juste avant
Ne vous cassez plus la tête, je pense que Stealth à trouvé l'algo master (sur le même principe que le mien mais sans boucle).
non ya mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $alea = rand(1,19);//19 = 25 - 6 if ( $alea > 3 ) { $area += 6; // 6 = 10-4 }
Ca a l'air en effet pas mal (et simple) sauf qu'à mon avis, il vaut mieux remplacer 6 par 7 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $alea = rand(1,18);//19 = 25 - 7 if ( $alea > 3 ) { $area += 7; // 7 = 10-3 }
c'est ce que je me suis dit au début puis apres j'ai testé avec des cas limites, ça dépent comment on interprete les intervalles (ouvert ou fermés)
si aléa vaut 3 alors il reste à 3.
si aléa vaut 4 alors il faut qu'il se décale à 10 d'ou le +6...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager