J'ai un programme serveur qui sélectionne au hasard 10 à partir d'un groupe de réseau de pairs pour accomplir une tâche. Le code qui génère l'aléatoire des indices des pairs est comme suit:
indices = let index = getStdRandom $ randomR (0, number_of_peers - 1)
in sequence $ replicate 10 index
Le programme a été en cours d'exécution pendant des mois, générant des milliers de "indices" chaque jour, et a été fonctionne bien jusqu'à hier, quand j'ai remarqué que quelque chose a mal tourné: les nombres aléatoires générés semblent "convergent" à quelques doublons (le résultat est que le réseau de pairs sont lourdement chargés).
Pour voir le changement, ci-dessous, le journal du serveur il y a quelques jours:
peers selected: [55,47,80,74,183,85,04,33,72,58]
et le journal d'aujourd'hui (comme vous pouvez le voir par les pairs, 53, 37 et 195 sont sélectionnée à plusieurs reprises):
peers selected: [53,53,37,37,37,37,195,195,195,21]
Le programme est en cours d'exécution sur une version x86_64 version de Ubuntu 10.10.