计算机程序可以产生真正的随机数吗?不是random伪随机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机程序可以产生真正的随机数吗?不是random伪随机相关的知识,希望对你有一定的参考价值。
光靠程序是无法实现真随机数的。要实现真正的随机数,必须有真正随机的种子。
在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。
有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚厚的一本书的篇幅。不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。
扩展资料:
随机数在密码学中非常重要,保密通信中大量运用的会话密钥的生成即需要真随机数的参与。如果一个随机数生成算法是有缺陷的,那么会话密钥可以直接被推算出来。若果真发生这种事故,那么任何加密算法都失去了意义。
密码学中大量利用伪随机数生成器的应用还有流密码。流密码的著名例子是RC4。流密码的原理是利用一个密码学安全的伪随机数生成器根据密钥产生一串密码学安全的伪随机比特列,再将消息与上述随机比特列按位异或运算。
参考资料来源:百度百科-随机数
参考技术A 光靠程序是无法实现真随机数的。要实现真正的随机数,必须有真正随机的种子。追问不是说量子力学中粒子的位置是随机的吗?量子计算机可以用来实现真正的随机吗?还有不可以在程序外关联一个能制造随机的硬件装置呀,比如一个超高速的掷硬币装置,我试了用蒙特卡洛这种利用概率的算法求圆周率不是很精确,我想就是因为random这毕竟是伪随机,如果是真正的随机的话,无论是理论上还是显示我感觉应该很精确,至少比祖冲之求的精确
本回答被提问者和网友采纳 参考技术B 可以追答我们上次正确的的数和用计算机的数差好多
追问是怎么个算法呢,
追答那只是偶然情况
用笔算
追问伪随机数后面都是有一个算法的,算法意味着是要有逻辑的,既函数,无论表面看起来多么随机,其实背后不还是有一个规律吗
追答如果用计算机算多算几遍
听不懂
追问但是不是说量子屋里月中量子的下一刻的位置是真正的不可测的,随机的,可以把他结合到程序中吗
或者程序的背后绑定一个实物装置,比如高速的掷硬币
追答我要晕了
我懂的不多自是个小学女生
追问量子计算机是干什么的呀
追答嗯嗯嗯嗯额
我查查
执行指令的
后面的我忘了
追问你上小学吗,那你知道圆周率么
追答知道
追问你知道圆周率怎么求吗
追答3.1415926535……
我刚刚上厕所
人那
你也去上厕所
兀
追问可以用随机数计算这个派,但是这个随机数其实是伪随机数,所以说还是有些误差的,要是没有真正的随机数就好了,就像掷硬币那样的,下一刻是绝对纯概率的,所以最近在纠结这个问题
追答额
追问蒙特卡洛求算法求圆周率
追答啥
抛硬币也有立着的时候
追问我希望有一些志同道合的朋友讨论讨论,原来你真是个00后哇
你可以买彩票了
追答什么是OO后
为什么可以买了
追问指十几岁的孩子
追答噢
我12
追问硬币立着的几率和中彩票差不多
追答我立着过好次
追问我12时还没见过大哥大呢
追答大哥大是啥
追问你那是桶还是硬币呀
追答你多少岁
硬币
追问我是最大的九零后,你算算
追答20多岁是吗
追问对
追答我是算命先生
追问你们现在小学生都有手机吗
追答有
追问几个
追答只不过这不是我的我的在充电
2个
追问你们好幸福呀,根本不用担心作业了
追答……
为啥
追问我们那时天天买资料书抄答案
追答我很利害的
追问不错
追答我以经破过好多道全班都没做出的题
追问是数学题吗,我数学最差了,真厉害
你们教室提供免费wifi么?
追答是数学
提拱
我刚才写作业1了
我还没写完
追问你们数学老师厉害吗
追答你好
人
这几天我爸出门了
所以没玩
对不起
不利害
你好
参考技术C 光靠程序是无法实现真随机数的。要实现真正的随机数,必须有真正随机的种子。Insecure Randomness 不安全的随机数
Insecure Randomness
Abstract
Explanation
String GenerateReceiptURL(String baseUrl) { Random ranGen = new Random(); ranGen.setSeed((new Date()).getTime()); return(baseUrl + Gen.nextInt(400000000) + ".html"); }
Recommendation
解决办法:
以上是关于计算机程序可以产生真正的随机数吗?不是random伪随机的主要内容,如果未能解决你的问题,请参考以下文章