2010-12-06 17 views
1

je générer un tableau de nombres aléatoires, entre 0 et 2 avec ce code:Problème lors de la génération d'un tableau de valeurs aléatoires

for ($j = 0; $j < 60; $j++) { 
     for ($i = 0; $i < 100; $i++) { 
       $value = rand(0,2); 
       $DBH->query("INSERT INTO map (x, y, value) VALUES($i, $j, $value);"); 
    } 

et j'ai trouvé et bizarrerie, comme vous pouvez le voir ici, les lignes sont aléatoires, mais ils répètent:

 
22121000210211220022122200120200122000122121 
22121000210211220022122200120200122000122121 
22121000210211220022122200120200122000122121 
22121000210211220022122200120200122000122121 
22121000210211220022122200120200122000122121 

Comment éviter cela?

Répondre

3

Vous pourriez vouloir semer explicitement votre générateur en utilisant srand, par ex. srand(time()) (notez que le lien srand a un meilleur exemple de semer que d'utiliser simplement le temps, cela dépend de la façon dont vous avez besoin, je suppose).

A défaut

  • Vous pouvez essayer d'utiliser mt_rand avec mt_srand
  • Vous pouvez toujours utiliser la fonction rand de MySQL pour générer les nombres comme une solution de contournement.
+2

Juste vu cette comparaison intéressante sur mt_rand: http://portfolio.technoized.com/notes/26 – Jere