电脑取随机数是什么原理,是真正的随机数吗?

 我来答
雄夕界5451
2017-12-06 · TA获得超过334个赞
知道答主
回答量:303
采纳率:96%
帮助的人:84.5万
展开全部

伪随机数这个概念是相对于“真”随机数而言。电脑通过发送种子数值,运用算法产生某个看起来像随机数的数字,但是实际上这个数字是可以预测的。因为电脑没有从环境中收集到任何随机信息。虽然是伪随机数,但是并不是所有领域都不需要伪随机数。比如,如果你在玩电子游戏,那么游戏过程中是靠伪随机数还是真随机数并不重要。另一方面,如果你的应用正在加密,情况就不同了,因为你不希望攻击者能够猜到你的随机数。举个例子,如果攻击者掌握了某随机数生成器使用的种子数值和加密算法,如果随机数生成器完全依靠种子数值和加密算法生成密文,这个过程中不添加任何额外随机性,如果攻击者掌握的情报足够多,他们可以逆推来确定加密算法一定会用到的伪随机数,也就能破译密文。

兴商步步高937
2017-12-06 · TA获得超过343个赞
知道答主
回答量:272
采纳率:98%
帮助的人:58.7万
展开全部

如果电脑是靠代码生成随机数,是不是意味着随机数可以被预测?根据随机数的生成原理,我们把电脑随机数分为两类:“真”随机数和伪随机数.要生成一个“真”随机数,电脑会检测电脑外部发生的某种物理现象。比如说,电脑可以测量某个原子的放射性衰变。根据量子理论,原子衰变是随机而不可测的,所以这就是宇宙中的“纯粹”随机性。攻击者永远无法预测原子衰变的发生时间,也就不可能猜出随机值。

举个更实际的例子,电脑会根据环境中的噪音或者采取你敲击键盘的精确时间作为随机数据或熵的生成依据。举个例子,你的电脑监测到你某天下午2点以后敲击键盘的精确时间是0.23423523秒,有足够的这些特定长数字你就能得到一个熵源,也就可以生成“真”随机数。由于人不是机器,所以攻击者无法掌握你的敲击时间。Linux中的/dev/随机设备生成随机数,“阻拦”访问直到熵积累量足够才返回一个真随机数。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b4421474d1
2017-12-06 · TA获得超过836个赞
知道小有建树答主
回答量:579
采纳率:92%
帮助的人:125万
展开全部

「真随机」也有不同的含义,若想要「真正的真随机」目测只能靠量子力学了。一般的所谓真随机不是指这个,而是指统计意义上的随机,也就是具备不确定性,可以被安全的用于金融等领域,下面说的也是这种。答案是,计算机系统可以产生统计意义上的真随机数。大部分程序和语言中的随机数(比如 C 中的,MATLAB 中的),确实都只是伪随机。是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。直观来想,计算机是一种可确定,可预测的的设备,想通过一行一行的确定的代码自身产生真随机,显然不可能。但是,我们或许可以迂回一下……实现方法简单说就是软硬结合,或者说,引入系统外的变量(把软件,代码,算法想象成一个封闭的系统)。一个典型的例子就是 UNIX 内核中的随机数发生器(/dev/random),它在理论上能产生真随机。即这个随机数的生成,独立于生成函数,这时我们说这个产生器是非确定的。具体来讲,UNIX 维护了一个熵池,不断收集非确定性的设备事件,即机器运行环境中产生的硬件噪音来作为种子。比如说:时钟,IO 请求的响应时间,特定硬件中断的时间间隔,键盘敲击速度,鼠标位置变化,甚至周围的电磁波等等……直观地说,你每按一次键盘,动一下鼠标,邻居家 wifi 信号强度变化,磁盘写入速度,等等信号,都可能被用来生成随机数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式