本文共 750 字,大约阅读时间需要 2 分钟。
伪随机数小项目
猜数字游戏 //C语言 猜数字游戏
https://blog.csdn.net/csdn_kou/article/details/79785709
C语言之随机数生成超详解
https://blog.csdn.net/csdn_kou/article/details/79788815
在上面的文章中,使用固定函数就一直是生成固定的随机结果,但是引入时间seed就可以达到我们的要求。
上面两个生成随机数的方法都是通过一个seed来获取,他是达到了我们需求的随机数,但是他并不完全是真正的随机数。在某种特定场景下,是可以复现这个随机数。或者说我们生成的随机数是有规律可循的,只是他的规律周期比较长。
真随机数
使用物理现象产生的随机数才是真随机数。比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。
- http://random.org/ 从1998年开始就在Internet上提供真随机数服务了, 它用大气噪音生成真随机数
- Linux中的文件可以看到黄色的设备文件cd /dev && ls 它利用机器的噪音生成随机数,噪音源包括各种硬件运行时速,用户和计算机交互时速。比如击键的间隔时间、鼠标移动速度、特定中断的时间间隔和块IO请求的响应时间等。
- 2011年,加拿大渥太华的物理学家Ben Sussman利用激光脉冲和钻石创造了真随机数。 Sussman的实验室使用持续几万亿分之一秒的激光脉冲照射钻石,激光进入和出来的方向发生了变化。
- 2012年4月,https://phys.org/news/2012-04-fastest-random-silence.html 从真空中的亚原子噪音获取随机数 研究小组开发了可以通过激光监听真空中随机噪音的工具并以此产生真正的随机数。