大气噪声和生成随机数java

Jee*_*hah 6 java random noise

我有兴趣了解如何使用大气噪声生成真正的随机数.我知道RANDOM.ORG这样做但他们(当然)不解释流程是什么以及如何实施.我想知道这个过程是如何工作的,以及它如何在java中实现.我已经查看了这篇文章,但它是针对.net所以我不理解它.我还查看了关于真随机性RANDOM.ORG文章.如果有人能够让我对这项工作有一个大概的了解以及如何实施,我们将不胜感激.

cam*_*ecc 6

如果你在过去一年的某个时间买了一台计算机,它有一个很好的机会,它有一个真正的随机数生成器直接嵌入CPU中.当英特尔于2012年4月开始发售基于Ivy Bridge的Core和Xeon处理器时,这一点就可以使用了.

IEEE Spectrum中有一篇很好的文章描述了英特尔的数字随机数发生器是如何工作的.它们基本上将两个非门连接成一个环路,从而产生一个固有的不可预测的电路,由于热噪声的随机效应,该电路会进入0或1状态.热噪声只是随机原子振动,这与RANDOM.ORG在采样"大气噪声"时使用的基本物理现象几乎相同.

有关英特尔RNG及其输出质量的真正深入分析,请参阅密码学研究的PDF文档,尤其是第7页.

英特尔添加了一个名为RDRAND的新x86指令,允许程序直接检索这些硬件生成的随机数.从Java 7开始,JVM尚未为此指令添加本机支持(如果有的话).

但是,可以使用JNI从Java调用RDRAND.这是我在drnglib项目中采用的方法.例如:

DigitalRandom random = new DigitalRandom();
System.out.println(random.nextInt());
Run Code Online (Sandbox Code Playgroud)

nextInt()方法实现为调用RDRAND的JNI本机调用.这是相关的调用堆栈:

RDRAND的表现非常好.使用具有八个线程的drnglib可产生~760 MB /秒的随机数据.


Ang*_*chs 4

您必须将无线电接收器连接到您的机器(例如:飞利浦 FM1236/F 电视调谐器/FM 无线电/视频 PCI 采集卡)。

将其插入空闲的 PCI 插槽,您应该能够使用某些音频收听设备(如 VLC Player)测试其工作情况。

然后,您将其调整到非发送频率,并将程序连接到其代表的设备以进行音频捕获(正确的方法取决于您使用的卡,但这会有所帮助:http://docs. oracle.com/javase/tutorial/sound/capturing.html

然后,您以最简单的方式处理音频捕获:将其作为波形存储到磁盘上并逐字节读取。