Михаил писал(а):
Случайность и уникальность. Весь окружающий мир - одна неповторимая случайность. Нам не удастся в точности повторить ни один опыт, проведенный ранее. Но как только данные попадают в компьютер они перестают быть случайными и в лучшем случае становятся уникальными, для конкретной последовательности, естественно.
Генераторы псевдослучайных чисел полностью детерминистичны, одно начальное состояние - одна и та же последовательность. Они чем-то похожи на периодические функции вроде синуса или косинуса, только ещё более детерминистичны, т.к. обычно используют целочисленную арифметику. Разумеется, ни один ГПСЧ, включая поточный шифр, не выдаёт истинно случайную последовательность, т.к. её можно сжать до размеров самой программы-генератора и её начального состояния.
Цитата:
Наверное, только одну область - криптографию не устраивает такое положение дел. Отсюда и все более сложные алгоритмы - попытки заставить результат выглядеть, как можно более случайным. Усложнить попытки ‘дизассемблирования’ исходных данных.
В криптографии поточный шифр должен удовлетворять тесту на следующий бит, т.е. человечеству не должен быть известен способ восстановления его внутреннего состояния по его выходу ощутимо быстрее полного перебора. А состояния там большие, как минимум 128 бит, а то и 256. Некриптографические генераторы проверяют менее строго: требуют теоретических гарантий их периода и прогоняют эмпирические тесты на соответствие равномерному распределению на выборках порядка порядка десятков терабайт. И нет, не простые частотные тесты, а что-то вроде TestU01 и PractRand. При этом если знать алгоритм, то его состояние по выходу восстановить обычно куда проще, чем у некриптографических генераторов. Иногда достаточно чуть ли не одного значения.
Т.к. шифры нынче быстрые и простые, то я занимаю максималистскую позицию и считаю некриптографические генераторы скорее хакерскими трюками для весьма специфических случаев.
Цитата:
для одной и той же последовательности данных, разное случайное число).
Поточный шифр столь же детерминистичен, как и простая арифметическая прогрессия: одно начальное значение (ключ и вектор инициализации) - одна и та же псевдослучайная последовательность. Иначе ничего нельзя было бы расшифровать.
arisu писал(а):
чача, засидированая из системного cprng — пушка. не всегда нужна, но надёжно убьёт муху. вместе с домом.
Просто это - дешёвая и быстрая пушка, в той же glibc ГПСЧ очень плохого качества устроен сложнее ChaCha. Ультрабыстрые некриптографические генераторы как "вторая линия" тоже нужны, и я такие коллекционирую, но необходим очень жёсткий отбор таких алгоритмов. Пихать абы что в стандартные библиотеки языков программирования - это полный бардак, доставшийся нам от хакерских трюков для ламповых машин. Даже для 8-битных компьютеров или IBM PC XT можно придумать более-менее сносные генераторы, проходящие современные статистические тесты. И даже для обероновской системы типов - можно, хотя и сложно.
Цитата:
один фиг почти все режут диапазон генераторов при помощи MOD — и на этом месте уже неважно, какой там генератор изначально был.
Есть ещё одна скользкая тема - преобразование целочисленных значений в число с плавающей запятой. Есть по меньшей мере три способа, и только один из них - строгий, т.е. даже без теоретических изъянов.