是否可以仅使用软件生成真正的随机数?

时间:2013-10-23 06:05:27

标签: algorithm random

环顾一下,我发现大多数用于生成真随机数的解决方案都涉及inspecting natural phenomenon 但是真的有必要吗? 我的意思是,假设Pi具有随机无限的数字序列as far any system could tell,我们不能只构建一个看起来像这样的算法(假设64位架构):

  1. 取前64位。
  2. 将这些位转换为double
  3. 接下来的64位
  4. 将这些位转换为double
  5. 等...
  6. 当然这可以增强(涉及种子,投射到整数等等......)

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

    注意:
    关于pi的假设,根据维基百科,人们普遍认为Pi是Normal number。 这不应该够吗?如果它不能被反驳,那对任何实际的系统来说都不够吗?

3 个答案:

答案 0 :(得分:8)

不,这绝对不可能!

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

您确实可以生成一个看似具有相同分布的确定性序列 人们期望从随机生成的数字。但它仍然是确定性的。

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

我相信你说数字的分布似乎是统一的是对的:但是这引出了一个显而易见的问题:我们从哪里开始?我们需要从序列中选择一个随机的位置来使它“真正随机”:因此我们回到原点。

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

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

关于这个主题绝对值得一读的论文是Bennett的“随机且难以描述的数字”,用快速的Google很容易找到它。

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

This reminds me of an XKCD...

答案 1 :(得分:6)

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

另一方面,像梅森捻线机那样的伪随机发生器设计得很快,很容易播种,并且可以进行一些分析(例如,在捻线机的情况下,例如循环长度)。 / p>

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

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

答案 2 :(得分:1)

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