4

环顾四周,我发现大多数生成真正随机数的解决方案都涉及检查自然现象
但真的有必要吗?
我的意思是,假设任何系统都可以告诉Pi它具有随机无限的数字序列,我们不能构建一个看起来像这样的算法(假设 64 位架构):

  1. 取前 64 位。
  2. 将位投入double
  3. 取接下来的 64 位
  4. 将位投入double
  5. ETC...

当然这可以增强(涉及种子,转换为整数等......)

这听起来对还是我错过了什么?

注意:
关于 的假设pi,根据维基百科,人们普遍认为 Pi 是一个正常数。这还不够吗?如果它不能被证伪,对于任何实际系统来说不应该是足够的吗?

4

3 回答 3

8

不,这绝对不可能!

在确定性机器上,您可以计算确定性序列。没有随机性。即使是混沌系统也只是确定性序列。

您确实可以生成一个确定性序列,该序列似乎具有与随机生成的数字分布相同的数字分布。但它仍然是确定性的。

Pi 是完全确定的:如果你和我都在 Pi 中生成数字序列,我们都会得到相同的数字。

我相信您说数字的分布似乎是均匀的是正确的:但这提出了一个明显的问题:我们从哪里开始?我们需要在序列中选择一个随机位置开始,以使其“真正随机”:因此我们回到第一方。

在实践中,我们使用看似随机的来源:Linux 将查看磁盘访问和击键之间的时间以及确切的时间。但是通过一些工作,我们可以越来越准确地预测所有这些,或者通过修复我们的环境来改变它们。

硬件随机数发生器使用被认为是真正随机的量子过程。例如,执行量子测量被认为是一个完全随机的过程:没有“更好”的初始状态知识可以帮助预测输出状态(与混沌系统一样)。

关于这个主题的一篇绝对值得一读的论文是 Bennett 的“关于随机和难以描述的数字”,通过快速谷歌很容易找到。

这是一个很好的相关XKCD :)

这让我想起了XKCD...

于 2013-10-23T06:59:01.213 回答
6

当然。但是为什么要这么麻烦呢?计算 π 是一项复杂的任务,很难对结果进行推理。此外,据我所知,没有算法可以在恒定时间内产生 π 的数字。

另一方面,像 Mersenne twister 这样的伪随机生成器被设计为计算速度快,易于播种,并允许进行一定量的分析(例如,对于 twister,循环长度)。

无论您如何计算伪随机数序列,如果算法已知,您就会对预测攻击持开放态度。(对于像 π 这样的数学常数,这将特别容易。)如果您将随机数用作安全系统的一部分,那么怀疑坏人可以预测序列将是一个明显的漏洞。

因此,出于这样的目的,“自然”现象可以有其用途。

于 2013-10-23T06:15:09.727 回答
1

Pi不也是一种自然现象吗?

于 2013-10-23T06:14:35.377 回答