生成真随机数的一种方法
来源:互联网 发布:多力多滋玉米片 知乎 编辑:程序博客网 时间:2024/05/16 03:48
用软件产生的随机数大家信不过,非硬件上场不可。
这里随机数的源头是环境噪声,是一种取之不尽的随机资源。要是用麦克录制环境噪声,再经过处理得到随机数,是个路子,但是有许多活要干。还有更简单的办法?
笔者发现Cool Edit Pro 2.0里有个噪声采集操作,采集时间也就是一两秒,可以生成一个.fft文件,此文件有32字节的头,大约640字节的尾,中间全部是噪声时序坐标和噪声参数,将坐标摘除、掐头去尾就可以得到品质优良的随机数。处理后可以得到140k字节的真随机数,考察了一下质量,256个元素全部出现,分布比较均匀,没有重复的大段或小段结构。
利用环境噪声产生随机数。前面的方法局限性太大(见生成真随机数的一种方法)。使用起来也不方便。
下面再介绍一种方法:利用多谐振荡器带动喇叭产生噪声,电脑接收噪声生成文件,经处理得到随机数,这种激励方式比环境噪声的内容更丰富。
多谐振荡器很容易实现,选择谐波丰富的振荡器,试验证实,高频比低频效果要好些,让喇叭产生啸叫一般就可以了,但如果多个振荡器在不同频段合唱可能效果更好。
将噪声收集到文件里,例如.wav文件,将文件里没用的东西去掉就可以得到随机数了。av文件也有多种,还要看采集是16位还是8位,是双声道还是单声道,要是双声道文件就有一半是没用的(因为两个声道的内容是一样的)。
采样噪声的振幅一定要稍微大些否则采样不饱满。但噪声大家都不爱听,要想法隔离它。最好将噪声信号直接发送到麦克口,可用喇叭小声监听。
试验中30秒采集,能获得1.3M字节的优质随机数。这可能是除了“生成真随机数的一种方法”以外,最经济的方法了,外围电路成本不足10元。
利用计算机音箱也能获得噪声,笔者曾试验先后开启十个winmap实例播放mp3,用它的噪声获得随机数效果是不错的。太少了效果就不好,这也要看乐曲本身的泛音状况。
总之这种方法的生成效率比较低下,没法和软件方式相比,后者可以达到每秒钟数十兆字节的速度。但绝对是真随机数。
- 生成真随机数的一种方法
- 计算机生成随机数的一种方法
- 真随机数的生成
- [算法][随机数]一种生成2个不相同的随机数的方法
- 生成随机数的方法
- 生成随机数的方法
- 生成随机数的方法
- 生成随机数的方法
- 生成随机数的方法
- 生成不重复随机数的一种算法
- Matlab一种简便的随机数生成
- 生成互不相同随机数的一种算法
- 生成不重复随机数的一种算法。
- 生成不重复随机数的一种算法
- 控制随机数生成概率的一种解决方法
- 生成互不相同随机数的一种算法
- 控制随机数生成概率的一种解决方法
- 控制随机数生成概率的一种解决方法
- 一款不错的原型设计工具(Good ProtoType Tool Balsamiq Mockups)
- Vistual Studio 2005使用小技巧
- 做项目了
- 对于linux socket与epoll配合相关的一些心得记录
- 真理就在生活中—做人及理财故事八则
- 生成真随机数的一种方法
- Xlib: connection to ":0.0" refused by server
- 界面原型设计工具(Balsamiq Mockups)
- jsf
- 比较Long型变量
- MyEclipse中编辑JS文件后乱码的解决方法
- SQL斐波拉契数列的非递归算法
- div中的图片垂直居中解决方案
- SQL 2005EXPRESS只读数据库的解决办法