Твистер Мерсенна: ограничения, используемые в моделях на основе агентов
Я использую Mersnenne Twister в качестве движка для генерации случайных чисел в агентной модели: она быстра и имеет очень длительный период перед повторением.
Недавно я сделал обзор литературы по этому вопросу, в то время как Java-библиотека библиотеки Colt рекомендует Twister Mersenne, я столкнулся с двумя ограничениями:
- начальное число не должно быть 0. Предлагается ли это в библиотеке Apache Commons Math?
- на основе криптографической бумаги было упомянуто, что "если начальное состояние имеет слишком много нулей, то сгенерированная последовательность может также содержать много нулей для более чем 10000 поколений, и если семена выбираются систематически, например, 0, 20, 30….. выходные последовательности будут коррелированы ".
Кто-нибудь сталкивался с такими проблемами, или это что-то исправлено и уже не так? Есть ли литература, показывающая спектральный анализ Мерсена Твистера по сравнению с другими, как линейный конгруэнтный генератор?
1 ответ
SFMT имеет лучшую характеристику нулевого избытка исходного состояния.
Обычный совет, чтобы избавиться от нулевой избыточной инициализации начального числа, состоит в том, чтобы использовать другой PRNG (который может иметь почти равную вероятность нулей и единиц на выходе) для генерации самого начального числа.
Смотрите также комментарий на тему "Как правильно посеять мерсенновый твистер RNG?"