真随机与伪随机(你可以伪随机真随机)

时间:2011-03-03 18:50:12

标签: random

好的,所以这个问题涉及一些前进。忍受我。 有这个网站random.org(和其他人喜欢它)声称使用某种量子过程或其他来产生真正的随机数。 如果一个人一遍又一遍地查询这个网站并开发一个真正随机数的大量日志。然后由程序重新排列该日志以尽可能随机地混合它。结果输出是否比启动时更少随机?多少钱? 关于这个问题的任何好/便宜的进一步阅读?

3 个答案:

答案 0 :(得分:4)

通过固定排列重新排序随机数并不会改变随机性。

因此,如果您有一个完美的随机数源,则重新洗牌的相同位将是同等随机的。如果“shuffle”是固定的重新排序(例如,反转所有位)还是由伪随机数生成器生成的shuffle(这实际上是从某些初始定义固定重新排序的非常混淆的方式),这将是真实的。种子)。

这可以从基础数学证明 - 如果你重新排序一组真正独立的同分布随机变量,那么得到的分布将与你开始的分布相同。因此它同样是随机的。

但是,如果混洗以某种方式依赖于随机位的值,则这不起作用。例如,如果您对这些位进行排序而不是置换它们,那么您将无法获得非常好的随机输出: - )。

答案 1 :(得分:0)

这取决于你如何重新排序它们。如果您使用伪随机函数来执行此操作,结果可能会更少随机。如果你使用真正的随机来重新排序自己,它将不会更随机。

人们忘记的一件事是,对一些真正的随机数使用伪随机函数的原因是反复和测试。如果使用伪随机函数得到一些意想不到的结果,将会查看可能的问题缓解器。

答案 2 :(得分:-1)

如果您的流程需要N'随机'数字,您可以从网站上取N,并使用它们,按顺序排列,一切都会好的。如果你重新洗牌,你会减少它们的随意性。

如果你需要持续提供随机数,那么问题就是这些伪随机玩法的相对质量与你有一个真正的随机序列会发生的情况。

然而,由于linux和windows都通过利用硬件熵提供实际随机数,为什么不直接使用它们呢?