| |
Consulter les messages sans réponse | Consulter les sujets actifs
|
Page 1 sur 1
|
[ 10 message(s) ] |
|
| Auteur |
Message |
|
Dr. Nicholas
|
Publié: 19 Mars 2006, 22:56 |
|
Inscription : 09 Mai 2004, 20:45 Message(s) : 3832
|
|
Salut, je voudrais savoir s'il est possible d'exclure une valeur dans une fonction RAND() en PHP. Exemple, je fais un RAND(1,10) mais j'exclue le 4.
Merci
_________________ Mon site : http://nivmath.no-ip.info/
|
|
| Haut |
|
 |
|
Jump
|
Publié: 19 Mars 2006, 23:22 |
|
Inscription : 07 Jan 2002, 00:24 Message(s) : 5834
|
|
tu as juste a faire une boucle.
Tant que le résultat de ton rand est 4 tu vas chercher une nouvelle valeur.
_________________ This posting is provided "AS IS" with no warranties, and confers no rights! ©2006 - 2014 Jump
|
|
| Haut |
|
 |
|
Dr. Nicholas
|
Publié: 19 Mars 2006, 23:33 |
|
Inscription : 09 Mai 2004, 20:45 Message(s) : 3832
|
Jump a écrit: tu as juste a faire une boucle.
Tant que le résultat de ton rand est 4 tu vas chercher une nouvelle valeur.
Oui mais la j'ai simplifié ma situation, je pourrais avoir aussi rand(1,100) et exclure tout les # sauf 1, 27 et 88 par exemple. Alors sa fait pas mal de boucle et j'ai peur que mon code ne deviennent lent...
_________________ Mon site : http://nivmath.no-ip.info/
|
|
| Haut |
|
 |
|
Jean-Gilles Lussier
|
Publié: 19 Mars 2006, 23:57 |
|
Inscription : 26 Fév 2003, 00:43 Message(s) : 10112
|
|
Faites un tableau qui contient un nombre d'entrées = à la plage de valeur - le nombre de valeurs exclues, ensuite initialez le tableau aux valeurs permises dans votre recherche de nombre alléatoire. Faite un rand sur le nombre d'entrées incluse dans le tableau et utilisez le résultat du rand pour indexer dans ce tableau.
|
|
| Haut |
|
 |
|
Dr. Nicholas
|
Publié: 20 Mars 2006, 00:03 |
|
Inscription : 09 Mai 2004, 20:45 Message(s) : 3832
|
Donc il n'existe vraiment pas de paramètre pour exclure du genre rand(1,10,{4,8,9})
Sa serait une idée pour php à rajouter 
_________________ Mon site : http://nivmath.no-ip.info/
|
|
| Haut |
|
 |
|
Jean-Gilles Lussier
|
Publié: 20 Mars 2006, 00:09 |
|
Inscription : 26 Fév 2003, 00:43 Message(s) : 10112
|
|
| Haut |
|
 |
|
Pro_PHP
|
Publié: 20 Mars 2006, 02:59 |
|
Inscription : 08 Jan 2002, 11:31 Message(s) : 811 Localisation : Still on Mars
|
La solutions est quand meme simple.
Voici un bout de code fonctionel:
Code : $rand_number = rand(1,10000); $not_allowed = array(1,200,10,999)
if (in_array($rand_number, $not_allowed)) { echo 'Non authoriser'; } else { echo 'authoriser'; }
|
|
| Haut |
|
 |
|
Dr. Nicholas
|
Publié: 20 Mars 2006, 16:11 |
|
Inscription : 09 Mai 2004, 20:45 Message(s) : 3832
|
Pro_PHP a écrit: La solutions est quand meme simple. Voici un bout de code fonctionel: Code : $rand_number = rand(1,10000); $not_allowed = array(1,200,10,999)
if (in_array($rand_number, $not_allowed)) { echo 'Non authoriser'; } else { echo 'authoriser'; }
C'est vrai que la solution du array est très bonne (merci pour ton code, je vais m'en inspirer pour créer une fonction que j'ai besoin  ) mais sa règle pas le problème que dans certaine situation il me faudra recommencer très souvent ma boucle pour arriver à une valeur valide.
est-ce qu'il y a une facon de faire une propositions d'amélioration à php?
_________________ Mon site : http://nivmath.no-ip.info/
|
|
| Haut |
|
 |
|
Pro_PHP
|
Publié: 20 Mars 2006, 16:36 |
|
Inscription : 08 Jan 2002, 11:31 Message(s) : 811 Localisation : Still on Mars
|
Honnêtement je ne crois pas qu'ils irait faire une modification sur une fonction de ce genre pour la raision suivante.
Les fonctions PHP refflète très souvent les fonctions C.
Tu peux surment soumettre des modifs sur la liste 'Internals', mais garre au flame.
http://www.php.net/mailing-lists.php
|
|
| Haut |
|
 |
|
Pro_PHP
|
Publié: 20 Mars 2006, 16:56 |
|
Inscription : 08 Jan 2002, 11:31 Message(s) : 811 Localisation : Still on Mars
|
Voici une autre méthode quii quand même pas mal plus élégante qu'un loop.
Code : $my_numbers = range(1,1000);
$exclude = array(1,2,3,4); $allowed = array_diff($my_numbers,$exclude);
shuffle($allowed);
echo 'your lucky number is'. $allowed[0];
|
|
| Haut |
|
 |
|
Page 1 sur 1
|
[ 10 message(s) ] |
|
Qui est en ligne ? |
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s) |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum
|
|
|
|