Selectionner 5 chiffres et 5 lettres aléatoirements

Selectionner 5 chiffres et 5 lettres aléatoirements - PHP - Programmation

Marsh Posté le 12-05-2003 à 19:54:47    

Salut , j'ai déja essayer et réussit mais seulement en selectionnant les caractéres à l'interieur même d'une chaine...
 
Comment le faire vraiment aléatoirement , si possible ?
 

Reply

Marsh Posté le 12-05-2003 à 19:54:47   

Reply

Marsh Posté le 12-05-2003 à 20:03:16    

Vais pas l'écrire en PHP parceque je connais mal ce langage, mais l'algo :
 

Code :
  1. cpt_Letter = 0
  2. cpt_Digit = 0
  3. chaîne = ""
  4. while (cpt_Letter < 5 or cpt_Digit < 5)
  5. {
  6.     if ((rnd * 2) < 1 and cpt_Letter < 5)
  7.     {
  8.          chaîne += chr(rnd*26 + 65)
  9.          cpt_Letter += 1
  10.     }
  11.     else
  12.     {
  13.          if (cptDigit < 5)
  14.          {
  15.              chaîne += chr(rnd*10 + 48)
  16.              cpt_Digit += 1
  17.          }
  18.     }
  19. }


 
Pas génial, mais ça marche.

Reply

Marsh Posté le 12-05-2003 à 22:11:22    

rand($min, $max) : nombre aléatoire.
chr($nb): retourne la lettre correspondant au code ascii
code ascii :  
 entre 48-57 : 0-9
 entre 65-90 : A-Z
 entre 97-122 : a-z
 
un exemple trouvé sur php.net :

Code :
  1. function randPass($len)
  2. {
  3. $pw = ''; //intialize to be blank
  4. for($i=0;$i<$len;$i++)
  5. {
  6.    switch(rand(1,3){
  7.     case 1: $pw.=chr(rand(48,57));  break; //0-9
  8.     case 2: $pw.=chr(rand(65,90));  break; //A-Z
  9.     case 3: $pw.=chr(rand(97,122)); break; //a-z
  10.   }
  11. }
  12. return $pw;
  13. }


 
le prob c'est les "trous" dans les codes ascii...
donc il est plus facile d'avoir une chaine et de faire un rand dessus, en plus c'est tout aussi aléatoire.

Code :
  1. $i= 0;
  2. $mystr= "";
  3. $str= "abcdefghij...XYZ";
  4. while($i<6){
  5.   $mystr.= $str[rand(0,51)];
  6.   $i++;
  7. }


Message édité par ethernal le 12-05-2003 à 22:12:05

---------------
...oups kernel error...
Reply

Marsh Posté le 12-05-2003 à 22:19:43    

ton machin, ça fait pas 5 de chaque :p

Reply

Marsh Posté le 12-05-2003 à 22:38:36    

MagicBuzz a écrit :

ton machin, ça fait pas 5 de chaque :p


 
je vais pas lui mâcher le boulot non plus  :whistle:


---------------
...oups kernel error...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed