Accueil > Forum > > > > génerateur de nombre aléatoire
génerateur de nombre aléatoire
lundi 1 novembre 2010 à 16:01:25 |
génerateur de nombre aléatoire

samnick
|
Bonjour à tous,
j'ai un problème je ne sais comment écrire un programme en php qui génère des nombres aléatoire constitué de 6 chiffres sans repetition.
merci pour votre bonne comprehension
|
|
lundi 1 novembre 2010 à 16:59:44 |
Re : génerateur de nombre aléatoire

cod57
|
Réponse acceptée !
salut
Code PHP :
<?php
$haz=array(1,
rand(2,3),
rand(4,5),
rand(6,7),
rand(8,9),0);
shuffle($haz);
$co="";
$i=0;
while($i<6){
$co.= $haz[$i];
if(!in_array($co,$haz)){
}else{}
$i++;
}
echo $co;
?>
c'est pour image captcha ?
a+
|
|
mardi 2 novembre 2010 à 20:12:12 |
Re : génerateur de nombre aléatoire

kohntark
|
Salut,
Ca me semble bien lourd tout ça !
Un truc comme ça est plus simple, non ?
Code PHP : $aNb = array_rand(range(0, 9), 6);
echo implode($aNb);
Bon, j'imagine que l'aléatoire n'a qu'un intérêt hyper limité ici (dans le cas contraire on ne met pas en place ce genre de limitation et on utilise des caractères, min/maj, etc ...) mais il est à noter que cette solution est moins aléatoire que celle que tu proposais.
Sur 100 itérations, il peut y avoir jusqu'à 4 fois le même chiffre, contre 2 avec la tienne.
Sur 1000, 12 contre 2.
Sur 100000, 550 contre 25
Ce ne sont que des valeurs issues de tests rapides, histoire de se faire une idée.
Menfin l'aléatoire on s'en fout un peu dans le cas présent ^^
Je n'ai pas compris ça :
Code PHP :
while($i<6){
$co.= $haz[$i];
if(!in_array($co,$haz)){
}else{}
$i++;
}
Pourquoi pas :
Code PHP :
?
Cordialement,
Kohntark -
|
|
mardi 2 novembre 2010 à 21:05:47 |
Re : génerateur de nombre aléatoire

cod57
|
@Kohntark
je vient de découvrir l'existence de array_rand() !
Ne prend pas mon exemple à coeur (c'est de la bricole)
il marche c'est tout, je pense que samnick voulait seulement la non répétition
le while : en fait je verifie si un élément
avec indice $i du tableau $haz existe déjà sinon je saute
à une nouvelle itération jusqu'à avoir 6 indices
avec un contenu différent
Merci pour ton exemple
|
|
mardi 2 novembre 2010 à 21:18:54 |
Re : génerateur de nombre aléatoire

kohntark
|
Ne prend pas mon exemple à coeur (c'est de la bricole)
il marche c'est tout, je pense que samnick voulait seulement la non répétition
Je ne le prends pas plus à coeur que ça
Mais plus c'est simple mieux c'est, non ?
le while : en fait je verifie si un élément
avec indice $i du tableau $haz existe déjà sinon je saute
à une nouvelle itération jusqu'à avoir 6 indices
avec un contenu différent
Heu, non, là tu ne fais rien d'autre que concaténer les valeurs d'un tableau ($haz) dans une chaîne ($co), ce qui revient au même qu'un implode(), mais en moins propre et moins efficace.
Tes lignes :
Code PHP : if(!in_array($co,$haz)){
}else{}
ne servent à rien.
Bonne soirée,
Kohntark -
|
|
mercredi 3 novembre 2010 à 14:13:40 |
Re : génerateur de nombre aléatoire

cod57
|
@Kohntark
oui
if(!in_array($co,$haz)){
}else{}
est inutile !
|
|
jeudi 4 novembre 2010 à 16:25:13 |
Re : génerateur de nombre aléatoire

f0xi
|
unicRandomizer class php
Code PHP :
<?php
/* unicRandomizer
construction $=new unicRandomizer(min, max, resetLimit)
parameters :
min : int, def 0, minimal random interval
max : int, def 100, maximal random interval
resetLimit : int, def 1000, cached values limit
reset()
reset cache
no parameters, returns the number of suppressed values
setMin(min,reset)
set minimal value of random interval
parameters :
min : int, def 0
reset : bool, def true
return :
0 setting ok, 1 setting corrected and ok, -1 error
setMax(max,reset)
set maximal value of random interval
parameters :
max : int, def 0
reset : bool, def true
return :
0 setting ok, 1 setting corrected and ok, -1 error
setMinMax(min,max,reset)
set minimal and maximal values of random interval
parameters :
min : int, def 0
max : int, def 100
reset : bool, def true
return :
array("min","max") values : 0 setting ok, 1 setting corrected and ok, -1 error
rand()
generate unique random value
no parameters, return random value in min>=value<=max interval
*/
class unicRandomizer{
protected $cache=array();
protected $resetLimit=1000;
protected $min=0;
protected $max=100;
public function __construct($min=0,$max=100,$resetLimit=1000){
$this->cache=array();
$this->resetLimit=$resetLimit;
$this->min=$min;
$this->max=$max;
rand(0,100);
}
public function reset(){
$ret=count($this->cache);
$this->cache=array();
return $ret;
}
public function setMin($min=0,$reset=true){
if($min > $this->max){
$this->min=$this->max;
$this->max=$min;
if($reset)$this->reset();
return 1;
} else {
$this->min=$min;
if($reset)$this->reset();
return 0;
}
return -1;
}
public function setMax($max=100,$reset=true){
if($max < $this->min){
$this->max=$this->min;
$this->min=$max;
if($reset)$this->reset();
return 1;
} else {
$this->max=$max;
if($reset)$this->reset();
return 0;
}
return -1;
}
public function setMinMax($min=0,$max=100,$reset=true){
$ret=array(
"min"=>$this->setMin($min,false),
"max"=>$this->setMax($max,$reset)
);
return $ret;
}
public function rand(){
$ret=rand($this->min, $this->max);
while(in_array($ret, $this->cache)){
$ret=rand($this->min, $this->max);
}
array_push($this->cache,$ret);
if(count($this->cache) >= $this->resetLimit){
$this->reset();
}
return $ret;
}
}
?>
unicRandomizer demo php
Code PHP :
<?php
include_once("unicRandomizer.class.php");
$ur=new unicRandomizer(100000,999999);
?>
<html>
<head>
</head>
<body>
<?php
for($i=0;$i<100;$i++){
echo $ur->rand(),'<br />';
}
?>
</body>
</html>
________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
|
|
jeudi 4 novembre 2010 à 20:59:53 |
Re : génerateur de nombre aléatoire

kohntark
|
@Foxi :
Je n'ai que parcouru, mais :
Je ne vois pas en quoi cette classe réponds à la question :
"générer un nombre aléatoire constitué de 6 chiffres sans répétition"
L'objet c'est bien, mais dans ce cas, heu ... ça n'apporte rien.
Kohntark -
|
|
dimanche 7 novembre 2010 à 10:58:28 |
Re : génerateur de nombre aléatoire
|
Cette discussion est classée dans : nombre, aléatoire, génerateur
Répondre à ce message
Sujets en rapport avec ce message
Nombre aléatoire [ par thekid23 ]
Salut comment faire un nombre aléatoire ?
Générer un nombre aléatoire [ par Mikonyx ]
slt,pour générer un nombre aléatoire, j'utilise la commande:srand(time());$url=rand(1,$x);echo $url; $x ayant été déjà défini avant...Ca fonctionne, m
générer un nombre aléatoire entre 1 et 16 [ par aze555666 ]
bonjour. quelle est la fonction php pour générer un nombre entier aléatoire entre 1 et 16??? le but est ensuite de récupérer le Nieme caractére dans u
Requete sql avec count() [ par bcmfr ]
Bonjour à tousJ'ai une table Mysq: Champ TypeAttributs--> Null </T
Suite de nombre [ par b_medamine ]
Bonjour, Peut être que ce n'est pas le bon endroit de poster mon post, mais j'en ai pas trouvé autres .... Voilç ma problématique : je cherche un
Présentation des résultats par carte [ par fouad77fr ]
Salut, J’ai une base de données MySQL qui contient le nombre des malades par le sida dans les 22 régions de la France. Je veux développer une ap
Nombre de sessions [ par coockiesch ]
Salut!J'ai une petite question. Prenons le cas d'une session qui contient du texte, par exemple le résultat d'une recherche sur un site, une liste de
Je cherche a faire un décompte [ par mrobien ]
Bonjour,Je m'explique en fait c'est pour un jeu audiotel qui donne un gagnant tous les x appels et je voudrai afficher le nombre d'appes restant avant
afficher nombre d'enregistrements dans une table [ par jipe32 ]
bonjour je vourais savoir comment afficher le nombre d'enregistrement dans une table sur une page php merci
tirage aléatoire et affichage pour un temps donnée [ par titeuf974 ]
Bonjour!Voila. J'ai une requète qui extrait une infomation aléatoire d'une base données pour l'afficher sur une page. Cela marche très bien. A chaque
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|