Nous sommes actuellement le 11 Juil 2026, 17:58

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 10 message(s) ] 
Auteur Message
MessagePublié: 19 Mars 2006, 22:56 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 19 Mars 2006, 23:22 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 19 Mars 2006, 23:33 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 19 Mars 2006, 23:57 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 00:03 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 00:09 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 26 Fév 2003, 00:43
Message(s) : 10112
Il ne semble pas: http://ca.php.net/rand


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 02:59 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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';
}

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 16:11 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

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 :wink: ) 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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 16:36 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Mars 2006, 16:56 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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


_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 10 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


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

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site