begin process at 2012 05 31 00:35:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

génerateur de nombre aléatoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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 :
$co = implode($haz);

?

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

Membre Club

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

Membre Club Administrateur CodeS-SourceS

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

Membre Club
@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

rt15

Membre Club Administrateur CodeS-SourceS
Bonjour,

Pour une question PHP, merci de poster sur phpcs.com dans un thème PHP et non dans le bar.

[ Déplacé sur phpcs ]


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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales