Bonjour,
j'ai une série de numéro à quatre chiffres.
Ex: 0020, 0050, 0120, 0125 ...
Je souhaite générer de nouveaux numéros et éviter les doublons avec les numéros existants.
Merci de me donner quelque pistes :p
Anthony
Où est-ce que tu mémorises les numéros déjà générés ?j'ai une série de numéro à quatre chiffres.
Ex: 0020, 0050, 0120, 0125 ...
$number = rand(0,9).rand(0,9).rand(0,9).rand(0,9);
Et pour éviter les doublons, il suffit, après génération, de regarder s'il est déjà existant et, si c'est le cas, de recommencer le traitement.zeus, je te remercie pour ta bonne réponse!Bonjour,
Où est-ce que tu mémorises les numéros déjà générés ?j'ai une série de numéro à quatre chiffres.
Ex: 0020, 0050, 0120, 0125 ...
Est-ce que tu as des règles spécifiques à respecter pour la génération ?
Sinon, pour générer un nombre à 4 chiffres, c'est simple :Et pour éviter les doublons, il suffit, après génération, de regarder s'il est déjà existant et, si c'est le cas, de recommencer le traitement.$number = rand(0,9).rand(0,9).rand(0,9).rand(0,9);
Il y a suffisement peu de probabilité que tu retombes sur un nombre existant pour que cette boucle soit suffisante.
J'aime aussi ta piste, merci d'avoir répondu =PJe vais pas te donner du code car je ne trouve pas les accolades mais voici le cheminiement que j'utiliserai (pas forcement le meilleur)
function genNombre($array)
On génére un nombre
Apres if(in_array($nombre,$array))
on relance la fonction avec genNombre($array) // Recursivité
else
on retourne nombre
et cela s'utilise :
$nombre = array('0025' , '0520' etc);
$newnombre = genNombre($nombre);
$nombre = array_push($nombre , $newnombre);
Voici ma vision des choses
Bye Hawk
PS: vive mac quand on trouve pas les touches -_-
$number = rand(0,0).rand(0,9).rand(0,9).rand(0,9);
if(in_array($number, $array)){
echo $test = 'OK - '.$number.'<br>';
}else{
header("Location: http://localhost/test.php");;
}
Merci beaucoup,
$array = array('0250','0350','0450'); //
function genRandNumber($array)
{
$number = rand(0,0).rand(0,9).rand(0,9).rand(0,9);
if(in_array($number,$array))
return genRandNumber($array);
else {
$array[] = $number;
}
Avec ce code le dernier élément de ton tableau $array sera le dernier nombre aléatoire généré