Générateur de numéro.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Générateur de numéro.

Merci!

par labyelo » 28 juil. 2009, 22:26

Outch, quesque je suis en retard! Merci pour votre aide à tous! :wink:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par fab » 28 juil. 2009, 20:07

Utilisé la récursivité c'est plus approprié dans ces cas là qu'une redirection, au passage là tu déclares OK si tu trouves une occurrence dans le tableau ce qui est censé vouloir dire que que le nombre existe déjà!!

$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é :)

par labyelo » 28 juil. 2009, 19:38

Désolé de revenir vous ennuyer :oops:
Mais aurait-il moyen d'optimiser le code, et surtout es-ce que la technique est correct dans le cas ou le numéro existe?

ps; le fichier test est le code ci-dessous (il retourne sur lui même).
$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,
Anthony

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par labyelo » 28 juil. 2009, 17:53

Bonjour,
j'ai une série de numéro à quatre chiffres.
Ex: 0020, 0050, 0120, 0125 ...
Où est-ce que tu mémorises les numéros déjà générés ?

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 :
$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.

Il y a suffisement peu de probabilité que tu retombes sur un nombre existant pour que cette boucle soit suffisante.
zeus, je te remercie pour ta bonne réponse! ;)
Je 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 -_-
J'aime aussi ta piste, merci d'avoir répondu =P

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par thehawk » 28 juil. 2009, 17:42

Je 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 -_-

Re: Générateur de numéro.

par zeus » 28 juil. 2009, 17:40

Bonjour,
j'ai une série de numéro à quatre chiffres.
Ex: 0020, 0050, 0120, 0125 ...
Où est-ce que tu mémorises les numéros déjà générés ?

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 :
$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.

Il y a suffisement peu de probabilité que tu retombes sur un nombre existant pour que cette boucle soit suffisante.

Générateur de numéro.

par labyelo » 28 juil. 2009, 17:24

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