为每个生成的随机数更改种子

Change seed for every generated random number

假设您使用种子生成随机数,这是自1970年1月以来在Microsoft库中以秒为单位经过的时间。但是在每生成一个随机数之后都要更改种子。会产生真正随机的结果吗?为什么?为什么?

编辑我对这个问题还有一部分。如果种子是不确定的呢?对于一个小例子,假设种子是由已经存在的trng(真随机数生成器)生成的。换句话说,如果我能以某种方式使种子不具有确定性,我是否能够生成一个随机序列,即不确定性序列。为什么?为什么?


本质上,您的技术只是将"随机性"转换为当您调用random()函数时:如果您在确定的时间(例如每秒一次)调用函数,结果将是确定的。如果在随机时间调用函数,结果将是随机的。

更准确地说,它取决于您用什么值调用seed()函数。如果使用确定性值调用seed(),则随后调用random()的结果将是确定性的。

更新(按请求):

软件随机生成器是完全确定的;它产生的值序列完全由传递给seed()的初始调用的内容决定。因此,如果使用已知的值调用seed(),则可以准确地预测从后续对random()的调用中会得到哪些值系列。如果使用真正随机数调用seed(),那么对random()的调用将相应地随机。

(但这就引出了一个问题:如果有随机数要传递给seed(),那么为什么还要调用random()?


真正的随机性不需要种子。播种仅适用于100%确定性的prng,而不是真正随机的prng。

所以不,以任何形式使用prng都不会产生真正的随机性。