【发布时间】:2016-03-08 10:01:16
【问题描述】:
我可以理解如何将种子用于伪随机生成(例如时间)并不能使其真正随机化;但是当伪随机生成器从硬件随机数生成器中获取种子时,伪随机生成器不会变成真随机,因为它的种子是从 TRNG 收集的?
【问题讨论】:
标签: random numbers generator random-seed
我可以理解如何将种子用于伪随机生成(例如时间)并不能使其真正随机化;但是当伪随机生成器从硬件随机数生成器中获取种子时,伪随机生成器不会变成真随机,因为它的种子是从 TRNG 收集的?
【问题讨论】:
标签: random numbers generator random-seed
首先,要认识到单个数字不是随机的或非随机的:只有大量的数字。
如果您从真正随机的源中播种 PRNG,然后继续调用 PRNG 以获取更多数字,那么您将得到一个伪随机的 sequence 数字,尽管播种良好。 p>
如果您使用真正随机源为 PRNG 播种,然后仅从 PRNG 中获取一个值,那么您将获得真正随机数的散列。如果 PRNG 的种子散列函数很好,这将与它的输入一样随机。如果不是,它可能更可预测(例如,一个只有 64 位内部状态的 PRNG 只会产生 2^64 个不同的值,不管你用多少位做种子)。
这并不是说这是一个坏主意——游戏模拟和 Monte Carlo 系统应该使用来自 TRNG 源的快速 PRNG,以获得速度和质量的最佳折衷。但是加密应用程序需要加密安全的随机值,这比较棘手。
【讨论】:
没有
好的种子是必要的,但它们不会改变 PRNG 的性质(和缺陷)。
例如,即使具有良好的绝对真实随机种子 RNG(例如 LCG),仍然会在高维度上经历相关采样
【讨论】: