par
epommate2 » 17 déc. 2010, 08:44
Oui, mais je n'ai pas trouvé plus simple pour garantir la répartition correcte des nombres ....
La complexité vient de l'utilisation d'une sortie de MD5 comme un entier qui ne peut se faire qu'avec BC et comme
BC ne lis pas l'hexadécimal, il faut faire la transformation à la main.
Si on n'a pas besoin de l'aléa, c'est plus simple :
function getDayNumber($max_number){
return strtotime(date("Y-m-d")) % $max_number;
}
Mais les images vont revenir avec la même périodicité ...
On peut compliquer un peu, mais je pense qu'il faut utilisé un fonction de hash pour avoir un bon aléa.
Je ne suis pas sûr que si on prend les derniers numéros du MD5, on ne va pas introduire un biais dans le tirage...
Mais je serais heureux de connaitre une technique plus simple !
(bon, évidemment, dans ce cas, ca permet d'économiser un champs dans une base de données, mais il y a des cas ou c'est vraiment nécessaire, exemple : tirer au sort un avatar a partir d'un email)
Oui, mais je n'ai pas trouvé plus simple pour garantir la répartition correcte des nombres ....
La complexité vient de l'utilisation d'une sortie de MD5 comme un entier qui ne peut se faire qu'avec BC et comme
BC ne lis pas l'hexadécimal, il faut faire la transformation à la main.
Si on n'a pas besoin de l'aléa, c'est plus simple :
[php]function getDayNumber($max_number){
return strtotime(date("Y-m-d")) % $max_number;
}[/php]
Mais les images vont revenir avec la même périodicité ...
On peut compliquer un peu, mais je pense qu'il faut utilisé un fonction de hash pour avoir un bon aléa.
Je ne suis pas sûr que si on prend les derniers numéros du MD5, on ne va pas introduire un biais dans le tirage...
Mais je serais heureux de connaitre une technique plus simple !
(bon, évidemment, dans ce cas, ca permet d'économiser un champs dans une base de données, mais il y a des cas ou c'est vraiment nécessaire, exemple : tirer au sort un avatar a partir d'un email)