永发信息网

电脑是否能产生真随机数?

答案:4  悬赏:30  手机版
解决时间 2021-11-17 21:42
电脑是否能产生真随机数?
最佳答案
    计算机理论上可以产生统计意义上的真随机数 。首先,「真随机」也有不同的含义, 真正的真随机目测只有量子力学了……一般的所谓真随机不是指这个,而是指 统计意义 上的随机,也就是具备不确定性,可以被安全的用于金融等领域,下面的真随机也均指这个。
    大部分程序和语言中的随机数(比如 C 中的,MATLAB 中的),确实都只是 伪随机 。是由可确定的函数(比如线性同余),通过一个种子(比如时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。
    直观来想,计算机是一种可确定,可预测的的设备,想通过一行一行的确定的代码自身产生真随机,显然不可能。但是, 我们或许可以迂回一下 ,一个典型的例子就是 UNIX 内核中的随机数发生器(/dev/random),它在 理论上能产生真随机 。即这个随机数的生成,独立于生成函数,或者说这个产生器是非确定的。
    实现方法:简单的讲就是软硬结合,或者说,引入系统外的变量(把软件,代码,算法想象成一个封闭的系统)。具体来讲,UNIX 维护了一个 熵池 ,不断收集非确定性的设备事件,即机器运行环境中产生的 硬件噪音 来作为种子。 比如说:IO请求的响应时间, 特定硬件中断的时间间隔, 键盘敲击速度,鼠标移动速度,甚至周围的电磁波等等……直观的说, 你每按一次键盘,动一下鼠标,邻居家 wifi 信号强度变化,磁盘写入速度,等等信号,都可能被用来生成随机数 。
    程序和算法本身不能产生真随机,但是计算机系统作为整体可以迂回产生统计意义上的真随机 。
全部回答
计算机可以生成真随机数,这是由于其在进行硬件驱动时,不可避免的受到不确定因素的影响而产生随机性,例如计算机至少需要显示驱动和发声驱动吧,体现在计算机编程语言上就是涉及显卡驱动和声卡驱动的编程函数有的执行时间是随机的,即使你连续调用这些函数执行时间也是变化的,利用这些就可以生成真随机数了。其它方法也不少就不多说了。
随机数是不可能的,都是伪随机数。

但是随机数与你说的摩擦、碰撞有关系吗?
目前由计算机产生的所有所谓的随机数都是伪随机数.

采用随机变化的种子再产生伪随机数,得到的结果更随机些,但它还是伪随机数. 因为如果重复这个过程(给同样值的种子),得到的结果是重复的(同样的).

如果不采用随机变化的种子,单用rand(),它只会产生固定的序列.例如: for(i=0;i<10;i++)printf("%d ",rand()); 每次运行输出的还是那十个数.

谈随机数的分布,涉及统计的概念,统计的前提是要有大量的样品.做到大量样品的分布满足某种分布(包括均匀分布或某种谱分布),算法上是不困难的.

我们在实验室里模拟天然海浪,让海浪符合设定的频谱和方向谱,还要满足波高和周期的时域统计分布,还有波群统计相似,单靠计算机提供的伪随机数是不够的,须要加上自己的算法,才能同时满足频域和时域的要求.

"我只要知道伪随机数用的是哪种算法,就能准确的知道下一个数将是什么",是对的,例如用时间做种子,你只要给入同样的时间,就能得到同样的结果.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女生内衣问题(变态勿进)
放学后的不合格者存档怎么按出来
“理论上说”和“实际上说”中的理论和实际各
要去杭电上学,想问下杭州下沙那边怎么样?
高131厘米宽95厘米等于多少平方米?
111大侠帮忙? 我没那么多分!
GTA5我在逗游上下的如何在车上听自己的音乐
谁有百度云盘超级会员啊 我想下个系统 好几个
原则和心胸有什么说法
江淮汽车(薛家湾直营店)地址在哪,我要去那里
今天男朋友聚会,是我作了吗
叫字换个补首什么字
受人捐赠 人死了 公安说我资金来源不明怎么办
倾城宝贝儿童摄影(重庆店)地址在哪,我要去那
穷二代,在上海月薪上万真的很难吗
推荐资讯
可以同时用相宜本草不同系列的产品吗
今年福州的新兵是去那里当兵的??
翡翠行业的发展史!
中信银行(汇丰大厦1层)地址在哪,我要去那里
海竿抛竿时线轮是打开的吗
季布一诺千金文言文字(楚人曹……)
外用0.05%依沙吖啶(利凡诺)溶液如何配制
一类压力容器首检在什么时候进行
日清di866 配5D2引闪怎么设置?还要其他买其
PS如何批量压缩图片
求助php一维数组重新排序
润福佳土特产直营店地址在什么地方,想过去办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?