rand () de PHP pas aléatoire...lol

  • Danny1337
  • Student
  • Student
  • No Avatar
  • Inscription: Mai 14, 2006
  • Messages: 70
  • Loc: Norway
  • Status: Offline

Message Mars 24th, 2010, 6:10 am

Im en utilisant la fonction rand () pour générer des nombres aléatoires entre 20 et 235, à insérer dans un tableau à l'aide de MySQL. Mais il semble que cette fonction aime le numéro 127 a beaucoup ..

Code: [ Select ]
$color_red = rand(20,235);
$color_green = rand(20,235);
$color_blue = rand(20,235);
  1. $color_red = rand(20,235);
  2. $color_green = rand(20,235);
  3. $color_blue = rand(20,235);


Sur 30 demandes, comme la moitié des résultats sont 127 .. (ci-joint copie d'écran ci-dessous)

J'ai essayé d'ajouter le code suivant au début, mais ne semble pas aider.
Code: [ Select ]
srand ((double) microtime( )*1000000);


Isnt rand () fonction aléatoire?
Attachments:
rnd.jpg
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 24th, 2010, 6:10 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 24th, 2010, 6:27 am

Est-ce que la fonction mt_rand vous fournir de meilleurs résultats lorsque vous l'essayer?

Avez-vous comparé la performance / aléatoire de générer un nombre aléatoire simple à utiliser et peu-shifting pour obtenir votre RGB?
Strong with this one, the sudo is.
  • Danny1337
  • Student
  • Student
  • No Avatar
  • Inscription: Mai 14, 2006
  • Messages: 70
  • Loc: Norway
  • Status: Offline

Message Mars 25th, 2010, 9:50 am

mt_rand n'a fait aucune différence. Je ne comprends pas votre seconde partie, lol.

J'ai essayé d'exécuter ce code, juste pour voir les valeurs

Code: [ Select ]
<?php
$color_red = rand(20,235);
$color_green = rand(20,235);
$color_blue = rand(20,235);

echo $color_red . " " . $color_green . " " . $color_blue;
?>
  1. <?php
  2. $color_red = rand(20,235);
  3. $color_green = rand(20,235);
  4. $color_blue = rand(20,235);
  5. echo $color_red . " " . $color_green . " " . $color_blue;
  6. ?>


Et elle n'a jamais atterri sur 127. Bizarre. Il semble être totalement aléatoire. mais quand ils sont insérés à la base, ils ont définitivement ne sont pas aléatoires


Edit *
Je crois que j'ai compris pourquoi .. J'ai eu des colonnes du tableau mis en TINYINT. elle semble mieux fonctionner avec SMALLINT. Vous ne savez pas pourquoi elle est importante, puisque TINYINT devraient travailler jusqu'à 255. oh well
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 25th, 2010, 10:43 am

La partie concernant les insérer dans MySQL glissé mon esprit avant, il aurait dû être évident avec le 127, en recul.

Jetez un oeil sur le type des colonnes de données que vous utilisez pour stocker vos nombres aléatoires dans la base de données. Son un TINYINT n'est-ce pas? Je parie que ses signé TINYINT est trop non?

Si elle est, elle le passage à une UNSIGNED TINYINT dû vous va.

Je pense que ce qui se passe, c'est que chaque valeur que vous insérez thats plus de 127 devient tronquée à 127 en raison de la TINYINT d'être signé, et donc limité à -127 à 127 au lieu de zéro à 255.

/ / Edit - Didnt avis de votre montage jusqu'à présent. :)
Strong with this one, the sudo is.
  • Danny1337
  • Student
  • Student
  • No Avatar
  • Inscription: Mai 14, 2006
  • Messages: 70
  • Loc: Norway
  • Status: Offline

Message Mars 25th, 2010, 10:40 pm

Heh, yeah.
<- Se sent stupide.

Merci =)

Afficher de l'information

  • Total des messages de ce sujet: 5 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 140 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC