我想了解如何利用大气噪声产生真正的随机数。我知道 RANDOM.ORG
可以做到,但他们没有解释该过程的实现方法。我想了解该过程是如何工作及如何在Java中实现。我查看了这篇文章,但它是针对 .net 的,我无法理解。我还阅读了RANDOM.ORG关于真随机性的文章。如果有人能给我一个大致的想法,说明如何实现,我将万分感激。
我想了解如何利用大气噪声产生真正的随机数。我知道 RANDOM.ORG
可以做到,但他们没有解释该过程的实现方法。我想了解该过程是如何工作及如何在Java中实现。我查看了这篇文章,但它是针对 .net 的,我无法理解。我还阅读了RANDOM.ORG关于真随机性的文章。如果有人能给我一个大致的想法,说明如何实现,我将万分感激。
DigitalRandom random = new DigitalRandom();
System.out.println(random.nextInt());
nextInt()
方法是通过JNI本地调用实现调用RDRAND的。以下是相关的调用堆栈:
RDRAND的性能非常好。使用8个线程的drnglib可产生约760 MB /秒的随机数据。
/dev/random
的讨论,它有自己的文章。为了提供足够的密码学随机性而投入到/dev/random
中的努力是惊人的。 - cambecc在2009年底,为了应对越来越多的客户和他们对良好可靠性和性能的需求,RANDOM.ORG进行了重大的重组。现在有一个分布式配置,不同地理位置的许多节点生成随机性,将其经过统计测试,然后将蒸馏出的随机比特流传输到云托管服务中,从中运行RANDOM.ORG服务。这种新的架构提高了服务的可靠性和性能,并帮助使RANDOM.ORG适用于现在提供的严肃应用(例如,彩票抽奖)。虽然仍然使用大气噪声生成随机数字,但今天使用的硬件和软件与1997年首次启动时的Radio Shack售价10美元的接收器相去甚远。
他们没有测量大气噪声的节点的图片,但是他们有广播噪声节点的图片。