假设您使用种子生成随机数,作为自1970年1月以来经过的时间(如微软库中)。但是,在生成每个随机数后,您可以更改种子。这会给出一个真正随机的结果。为什么或为什么不呢?
修改 我刚才还有一个问题。如果我让种子不确定,该怎么办?对于一个小例子,假设种子是由已经存在的TRNG(真随机数生成器)生成的。换句话说,如果我能以某种方式使种子不确定,我将能够生成随机序列,即非确定性序列。为什么或为什么不呢?
答案 0 :(得分:2)
基本上,你的技术只是将“随机性”转移到调用random()函数时:如果你在确定性时间调用函数(例如每秒一次),结果将是确定性的。如果您随机调用该函数,结果将是随机的。
更准确地说,它取决于你将seed()函数称为什么值。如果使用确定性值调用seed(),则后续调用random()的结果将是确定性的。
软件随机生成器完全确定;它产生的值序列完全取决于你传递给seed()的初始调用。因此,如果使用已知值调用seed(),则可以准确预测从后续调用random()中获得的值系列。如果你用一个真正的随机数调用seed(),那么对random()的调用将相应地随机。
(但这引出了一个问题:如果你有随机数传递给种子(),为什么还要打扰调用random()呢?)
答案 1 :(得分:1)
真正的随机性不需要种子。播种仅适用于PRNG,它们是100%确定性的,而不是真正随机的。
所以不,使用任何形式的PRNG都不会产生真正的随机性。