Впрочем, и для Монте-Карло в большинстве случаев должно хватить даже короткого цикла повторения псевдослучайной последовательности.
Зачем в большинстве случаев вообще об этом задумываться, когда можно просто использовать поточные шифры вроде AES-CTR или ChaCha как ГПСЧ общего назначения? Или если же нужна очень быстрая генерация и допустимо пойти на снижение качества генератора - то можно использовать MT19937, xoroshiro**/++ с очень длинными периодами.
Поэтому стандартные генераторы выдают только старшие биты.
Обычно это относится к линейным конгруэнтным генераторам с делителем - степенью двойки. Но их использование без скремблеров бессмысленно, т.к. минимально приемлемое качество достигается где-то на 256 битах (из которых хорошие только старшие то ли 32, то ли 64 бита), а такое расширение состояния может делать его медленнее AES или ChaCha, т.е. заведомо не нужным.
Я считаю, что учебники бывают недостаточно категоричны в плане качества ГПСЧ. По идее современная аппаратура позволяет уже рекомендовать использовать поточные шифры в ГПСЧ просто по умолчанию, и именно их и надо рекомендовать как эталон. С возможным перечнем каких-то 5 более-менее приличных скоростных генераторов вроде Philox, xoroshiro**, PCG, SFC64, даже MT19937 с максимально жёстко-консервативным подходом к их использованию (например, говорить, что PCG или MT19937 нельзя использовать как многопоточные ГПСЧ, и что перед любым применением MT19937 надо думать о том, критичны ли его дефекты для задачи). Причём их можно и нужно позиционировать как "bithacks" для агрессивной оптимизации и/или GPU. При этом надо честно говорить, что большинство ГПСЧ из второго тома Кнута - это игрушки, и что сам Кнут это предвидел.
Т.е. вполне допустим и желателен сдвиг в мышлении: переход от "почему Вы использовали шифр для ГПСЧ" к "отказ от использования шифра в ГПСЧ требует специального обоснования".
Цитата:
Опять же, все эти рассуждения бессмысленны без использования понятия энтропии. Энтропию можно собирать при помощи криптографических хэшей, гарантирующих хорошее перемешивание собранных случайных бит.
Думаю, тут надо уже обращаться к описаниям алгоритмов Fortuna и Yarrow.