环顾一下,我发现大多数用于生成真随机数的解决方案都涉及inspecting natural phenomenon
但是真的有必要吗?
我的意思是,假设Pi
具有随机无限的数字序列as far any system could tell,我们不能只构建一个看起来像这样的算法(假设64位架构):
double
double
当然这可以增强(涉及种子,投射到整数等等......)
听起来是对的还是我错过了什么?
注意:
关于pi
的假设,根据维基百科,人们普遍认为Pi是Normal number。
这不应该够吗?如果它不能被反驳,那对任何实际的系统来说都不够吗?
答案 0 :(得分:8)
不,这绝对不可能!
在确定性机器上,您可以计算确定性序列。没有随机性 找到。即使是混乱的系统也只是确定性的序列。
您确实可以生成一个看似具有相同分布的确定性序列 人们期望从随机生成的数字。但它仍然是确定性的。
Pi是完全确定的:如果你和我都在Pi中生成数字序列,我们两者都是 获得相同的数字。
我相信你说数字的分布似乎是统一的是对的:但是这引出了一个显而易见的问题:我们从哪里开始?我们需要从序列中选择一个随机的位置来使它“真正随机”:因此我们回到原点。
在实践中,我们使用似乎是随机性的来源:Linux将查看光盘访问,击键和确切时间之间的时间。但是通过一点点工作,我们可以越来越准确地预测所有这些,或者通过修复我们的环境来改变它们。
硬件随机数生成器使用被认为是真正随机的量子过程。例如,执行量子测量被认为是一个完全随机的过程:没有“更好”的初始状态知识可以帮助预测输出状态(与混沌系统一样)。
关于这个主题绝对值得一读的论文是Bennett的“随机且难以描述的数字”,用快速的Google很容易找到它。
这是一个很好的相关XKCD:)
答案 1 :(得分:6)
不确定。但为什么要去那么麻烦?计算π是一项复杂的任务,很难对结果进行推理。另外,据我所知,没有算法可以在恒定时间内产生π的数字。
另一方面,像梅森捻线机那样的伪随机发生器设计得很快,很容易播种,并且可以进行一些分析(例如,在捻线机的情况下,例如循环长度)。 / p>
但是,如果算法已知,则会计算伪随机数序列,让自己对预测攻击持开放态度。 (对于像π这样的数学常数,这将特别容易。)如果你使用随机数作为安全系统的一部分,那么怀疑坏人可以预测序列将是一个明显的漏洞。
因此,出于这种目的,“自然”现象可以有其用途。
答案 2 :(得分:1)
Pi也不是一种自然现象吗?