У меня есть серверная программа, которая случайно выбирает 10 из группы сетевых сверстников для выполнения задачи. Код, который генерирует случайные индексы сверстников, выглядит следующим образом:
indices = let index = getStdRandom $ randomR (0, number_of_peers - 1)
in sequence $ replicate 10 index
Программа работает в течение нескольких месяцев, каждый день генерируя тысячи "индексов" и работает до вчерашнего дня, когда я заметил, что что-то пошло не так: генерируемые случайные числа "сходятся" к нескольким повторяющимся (результат состоит в том, что соответствующие сетевые сверстники сильно загружены).
Чтобы увидеть изменения, ниже из журнала сервера несколько дней назад:
peers selected: [55,47,80,74,183,85,04,33,72,58]
и журнал с сегодняшнего дня (как вы можете видеть, одноранговые 53, 37 и 195 неоднократно выбраны):
peers selected: [53,53,37,37,37,37,195,195,195,21]
Программа работает на версии Ubuntu 10.10 версии x86_64.