Я могу понять, как использование семени для псевдослучайного поколения, такого как время, не делает его действительно случайным; но когда генератор псевдослучайных чисел получает свое начальное число от аппаратного генератора случайных чисел, не становится ли тогда генератор псевдослучайных чисел True Random, поскольку его начальное число собирается из TRNG?
Может ли генератор псевдослучайных чисел быть истинно случайным?
Ответы (2)
Прежде всего поймите, что отдельные числа не являются случайными или неслучайными: только большие наборы чисел.
Если вы зададите PRNG из действительно случайного источника, а затем просто продолжите вызывать PRNG, чтобы получить больше чисел, то у вас будет просто псевдослучайная последовательность чисел, хотя и хорошо засеянная.
Если вы запустите PRNG с действительно случайным источником, а затем извлечете только одно значение из PRNG, то у вас будет хэш действительно случайного числа. Если хэш-функция начального числа PRNG хороша, она будет такой же случайной, как и ее ввод. Если это не так, это может быть более предсказуемо (например, PRNG только с 64 битами внутреннего состояния будет давать только 2 ^ 64 различных значения, независимо от того, сколько битов вы задали).
Это не значит, что это плохая идея — игровые симуляции и системы Монте-Карло должны использовать быстрый генератор случайных чисел, полученный из источника TRNG, чтобы получить наилучшее сочетание скорости и качества. Но криптографические приложения нуждаются в криптографически безопасных случайных значениях, и это сложнее.
No
Хорошие семена необходимы, но они не изменят природу (и недостатки) ГПСЧ.
Например, даже с хорошим абсолютно истинным RNG со случайным начальным числом, таким как LCG, все равно будет происходить коррелированная выборка в больших размерностях.