当今的电脑是怎么产生随机数字的,如果是以时间为变量的函数,那他是不是可以预测?

推荐  (0) | 4人关注关注
2个答案
5 0

PalaeoBeaR喜欢编程的古生物工作者

2014-10-05 22:31

编程语言里边每次使用随机数的时候 都需要一个种子(seed)这个种子通过某种算法可以生成一系列的伪随机数
之所以是伪随机数而非随机数 是因为通过这种算法生成的数列是可知的 与随机的定义不一样

如果种子指定了,那么无论调用多少次,生成的伪随机数列总是相同的。

一般情况下,随机种子的缺省值为当前系统时间,具体精确度取决于系统和编程语言。

对于是否可以预测,这里有一个例子
在这个例子中,因为编程语言的原因,造成了随机种子集远小于扑克牌所有可能组合集。并且使用服务器时间作为种子,使得实际扑克牌顺序可猜测。
然而一旦随机种子的集合够大,或者同时使用数个随机种子,可以大大降低被猜测到的概率。

5 0

渚熏软件工程师,网路安全从业者

2014-10-06 00:10

有伪随机数也有真随机的

伪随机的一般都是各种算法,比如线性同余法,需要一个随机种子也就是你说的时间什么的,搞不好是会造成规律性的“随机数”。

也有很多硬件的真·随机数生成器,可以采集系统运行的温度、机箱风扇噪声、电路的电压电流白噪声之类的东西生成随机数,像树莓派上都有这种东西,pc系统上很多主板都有个叫tpm插座的东西,可以买个tpm模块插上这样也有硬件的真·随机数发生器了。
参考:
http://jandan.net/2014/02/23/random-number-how.html
http://www.oschina.net/translate/well-that-was-unexpected-the-raspberry-pis-hardware-random-number-generator
http://lib.cnki.net/cdmd/10248-2009140004.html

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区