Jusqu'à 32768//6 * 6 - 1 = 32765, la répartition entre les 6 chiffres (0 .. 5) est équivalente : 5461 chacun.
Mais 32766, dont le modulo 6 est 0, ajoute une chance pour 0.
Et 32767, dont le modulo 6 est 1, ajoute une chance pour 1.
Au final, ce générateur de mauvaise qualité a la distribution suivante:
0 : 5462 / 32768 = 0,16668
1 : 5462 / 32768 = 0,16668
2 : 5461 / 32768 = 0,16665
3 : 5461 / 32768 = 0,16665
4 : 5461 / 32768 = 0,16665
5 : 5461 / 32768 = 0,16665
C'est un pouillème, et dans notre cas pas très important.
Mais si tu utilise ça avec un modulo plus grand, la distorsion s'amplifie et peut avoir des effets non désirés.
Bref, si l'application est sérieuse, ne pas utiliser ça ; et c'est vrai dans tous les langages : RANDOM et MODULO = PAS BIEN !
[^] # Re: Et en Java ?
Posté par steph1978 . En réponse au journal Parce que ca vaut largement un journal .... Évalué à 10.
Travaillons avec 6.
Jusqu'à 32768//6 * 6 - 1 = 32765, la répartition entre les 6 chiffres (0 .. 5) est équivalente : 5461 chacun.
Mais 32766, dont le modulo 6 est 0, ajoute une chance pour 0.
Et 32767, dont le modulo 6 est 1, ajoute une chance pour 1.
Au final, ce générateur de mauvaise qualité a la distribution suivante:
0 : 5462 / 32768 = 0,16668
1 : 5462 / 32768 = 0,16668
2 : 5461 / 32768 = 0,16665
3 : 5461 / 32768 = 0,16665
4 : 5461 / 32768 = 0,16665
5 : 5461 / 32768 = 0,16665
C'est un pouillème, et dans notre cas pas très important.
Mais si tu utilise ça avec un modulo plus grand, la distorsion s'amplifie et peut avoir des effets non désirés.
Bref, si l'application est sérieuse, ne pas utiliser ça ; et c'est vrai dans tous les langages : RANDOM et MODULO = PAS BIEN !