打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
是否存在一种算法可以随机生成一个自然数?

在现在的计算机系统中,是无法产生「真」随机数的。这是因为,当前的计算机的各种算法,都是确定性的——输入是某某,则输出必然是p(某某),是一一对应的关系。

很多人可能会说:不对!我每次打开XX游戏,里面的内容都有差异。其实这种看法是片面的。不同的时候打开程序,本身就是不同的「输入」。因为很多随机算法,都会把系统时间当作随机数种子,作为一个初始条件,然后再输出很多看似随机的序列。

既然「算法」本身,特别是CPU是确定的,那如何去产生真随机数呢?有的读者可能会想到:直接加入一个元件,专门产生真随机数不就可以了吗?确实,很多程序确实就会用硬件来产生随机数。比如Linux系统中,就会收集计算机的温度、电压,来当作随机数种子。

为什么计算机的温度、电压,就可以用来产生真随机数呢?这是因为,温度、电压的浮动,背后是复杂的物理过程。而物理过程,特别是微观层面的物理,包含了非常大的随机成分。比如说温度,有的涨落可能完全就是随机的。更不用说,这些物理现象的背后,实际都包含了量子过程,而很多量子过程,是全然随机的。进而,使用这些数据的随机数生成器,可以看作是真随机的。

而要求更高的,则会使用专门的量子随机数生成器。比如说,可以使用半反射镜,以及单光子,来直接生成随机二进制序列。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
工程上存在那么多不确定情况,为什么计算机不能利用它们产生真随机数,而只能根据逻辑产生伪随机数?
随机数大家都会用,但是你知道生成随机数的算法吗?
重大进展,世界唯一!
伪随机
Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件、C语言中的随机事件、产生二维随机数、圆内均匀取点)
为什么很难给出“随机性”的数学定义?如何获得真正的随机数?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服