伪随机发生器能否真正随机?

时间:2015-12-03 17:02:22

标签: random numbers generator random-seed

我可以理解如何将种子用于伪随机数,例如时间不会使它真正随机;但是当伪随机生成器从硬件随机数生成器获取其种子时,伪随机生成器然后变为真随机,因为它的种子是从TRNG收集的吗?

2 个答案:

答案 0 :(得分:1)

首先,要意识到个别数字不是随机的或非随机的:只有大量的数字。

如果您从一个真正随机的来源播种PRNG,然后继续调用PRNG以获得更多数字,那么您将只有一个伪随机序列的数字,尽管播种良好。

如果您使用真正的随机源播种PRNG,然后从PRNG中仅获取一个值,那么您将获得一个真正随机数的哈希值。如果PRNG的种子散列函数是好的,那么它将与其输入一样随机。如果不是,它可能更具可预测性(例如,只有64位内部状态的PRNG将只生成2 ^ 64个不同的值,无论您使用多少位进行播种)。

这并不是说这不是一个坏主意 - 游戏模拟和蒙特卡洛系统应该使用从TRNG源播种的快速PRNG来获得速度和质量的最佳折衷。但是加密应用程序需要加密安全的随机值,这更棘手。

答案 1 :(得分:0)

没有

良好的种子是必要的,但它们不会改变PRNG的性质(和缺陷)。

例如,即使具有良好的绝对真实随机种子RNG(例如LCG)仍将在高维度上经历相关采样

相关问题