Random efficace

wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009 - 18 avril 2008 à 15:32
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010 - 18 avril 2008 à 18:20
Bonjour à tous !

J'utilise un random dans mon code php (entre 1 et 1500).

J'ai l'impression que cette fonction n'est pas géniale car il y a des nombres qui reviennent souvent...

Y'a t -il une méthode pour optimiser un random ou existe-t-il une autre fonction ?

Merci d'avance pour vos réponses !

7 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
18 avril 2008 à 16:18
salut
a mon avis, tu feras difficilement mieux...

sur un systeme linux, tu peux ouvrir le fichier /dev/random, dedans t'as des caracteres aleatoires.
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
18 avril 2008 à 16:31
Salut,
si tu utilise rand(), essaie mt_rand il est sensé être mieux.
0
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009
18 avril 2008 à 16:36
J'ai cru lire qu'on pouvait eventuellement la mixer avec un tableau pour améliorer son rendement, ca vous parle ?

Sinon mt_rand() s'utilise de la meme facon ?
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
18 avril 2008 à 17:50
Oui, mt_rand s'utilise pareil.
[a]http://fr3.php.net/mt_rand/a
Après à moins qu'il soit vraiment important que le random soit le plus possible aléatoire, je suis pas sur que ça vaille le coup d'essayer de l'améliorer (ça signifiera sûrement ralentir encore plus le script).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009
18 avril 2008 à 18:10
Voila ce que j'ai essayé :

$a=range(1,1000);
shuffle($a);
$random=mt_rand($a[0],$a[999]);

Qu'en penses tu ?
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
18 avril 2008 à 18:18
J'en pense que ça doit être lourd et surtout ne pas faire le résultat attendu.
1) le nombre sera entre 1 et 1000 et non 1 et 1500.
2) $a[0] peut être plus grand que $a[999]
3) même ordonnant les deux paramètres pour qu'ils soient dans le bon ordre, le tirage ne sera pas uniforme (je penses que les valeurs du milieu de l'intervalle ont plus de chance d'être tirées que les autres) .
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
18 avril 2008 à 18:20
A ce moment là tu peut faire :
$a=range(1,1500);
shuffle($a);
$random=a[mt_rand(0,1499)];
ce sera déjà plus correct.
0