katmars Posté 25 Juin 2012 Posté 25 Juin 2012 Bonjour, Nous utilisons la fonction php ARRAY_RAND() pour sélectionner aléatoirement "n" items dans un tableau de "m" colones. Je suis cependant surpris de voir que la distribution est très loin d'être homogène : l'article le plus sélectionné l'a été 7'690 fois lorsque le moins sélectionné l'a été 2'547, soit un ratio de 3 pour 1. L'un de vous aurait une explication ou a déjà observé un phénomène similaire ? Merci, Sylvain
SStephane Posté 25 Juin 2012 Posté 25 Juin 2012 Bonjour, J'ai effectivement remarqué un phénomène pseudo-aléatoire, mais pas dans tes proportions (tu n'aurais pas une vieille version de PHP car ça me paraît énorme là tout de même ). J'utilise shuffle() et récupère les premiers éléments du tableau, cela semble préférable au niveau de l'aléa du tirage.
katmars Posté 25 Juin 2012 Auteur Posté 25 Juin 2012 Ta remarque est tout à fait juste et après avoir creusé, je me suis aperçu que contrairement à ce que je pensais initialement, nous utilisons également la fonction SHUFFLE puis sélectionnons les "n" premiers items du tableau. Par contre la distribution statistique est bien aussi bizarre que mentionné (ratio de 3 pour 1 entre le premier et le dernier). Sylvain
SStephane Posté 26 Juin 2012 Posté 26 Juin 2012 1 => 102117 => 9926 6 => 9957 8 => 9974 4 => 9994 3 => 10019 10 => 9940 5 => 9983 2 => 9990 9 => 10006 Comme résultat de <?php $n=100000;$a=array(1,2,3,4,5,6,7,8,9,10);$b=array();for($i=0;$i<$n;$i++) { $c = $a; shuffle($c); if(!isset($b[$c[0]])) $b[$c[0]] = 0; $b[$c[0]]++;}?><pre><?phpforeach($b as $k=>$v){ print "$k => $v"; print "\n";}?></pre> Je ne pense donc pas que la fonction shuffle tire par pseudo-hasard, contrairement à array_rand, êtes vous bien certain de votre code ? (L'actualisation de la page joue en faveur du réel aléa de shuffle, par ailleurs)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant