软件尺度的“真随机数”

谈一谈随机数。单纯的计算机不会产生绝对随机的随机数,只能产生“伪随机数”。

简单介绍一下计算机密码学中随机数生成器(RNG Random Number Generator)的概念。
RNG引入信息熵的概念,通过信息熵和冗余数据复合运算得出随机数序列的。其中信息熵就是计算机不可预知的信息。
简单介绍一下随机数生成的步骤和衡量标准,了解一下吧。
步骤:收集信息熵,对信息熵进行估算(实际就是对数据初步裁减过滤),生成信息熵集合,计算输出函数。
衡量标准主要两个方面:随机性和安全性。随机性就是在多点采样的时候所有随机值(离散数)可达,并且根据算法生成的随机数满足一定分布规律,如正态分布或者平均分布等;安全性则是随机数输出函数不可逆,无法破解(实际上这些个随机数大部分是密码计算的一个部分的)。
很多随机数生成器通过人为控制或者硬件环境控制计算出信息熵集合,得出随机数。比如NoiseSpunge需要移动鼠标,Intel通过电阻和振荡器来生成热噪声作为信息熵资源,Linux的dev/random采用按键,鼠标移动或者irq中断等。
顺便一提,信息熵的信息量如果很有限的话,就不是一定是真的随机数了。

在一篇科幻小说(忘了题目了)中提到,如果大爆炸的奇点理论是正确的,那么只要获取爆炸前数据,就能完美模拟宇宙了。
我一直认为世界是离散的。即,不存在真正意义的随机数了。但是我们感知的数量级低于这个离散值,所以就出现了“随便”的事情。
我们的世界上最“随便”的数据就是人脑(人心哪……),宇宙的信息(不了解规律,等同“随便”,当然要精确到一定数量级)。那么考虑用这些东东作为随机数生成器的信息熵(为了满足随机性和安全性,不能直接拿来用)来源就是“真随机数”了。前面提到移动鼠标,按键之类的实际就是人为参与的数据了,在毫秒级的时钟控制下足够作为信息熵源了。

不过动作的“随便”是比不上思想的“随便”。那么离“真随机数”还是有差别的。组建一个动作采集器的网络,将网络终端的信息汇总,那么大概还是可以拉近几个数量级的差异的。这样命题就变成网络的组建了,看来要达到人脑的数量级还是比较难的,估计等到软件能“随便”的时候人类能对AI做的贡献就到尽头了。

结束了。有些虎头蛇尾啊,呵呵。因为原来想写的是通过网络数据来采集信息(包括天文地理等等的网络资源),结果仔细一想还是有人参与的,看来做一个完全自适应的纯软件随机函数发生器还是比较难。幸好明智的加了一对引号,;)。

posted on 2005-08-23 17:13  DCH  阅读(1903)  评论(2编辑  收藏  举报

导航