атмосферный шум и генерация случайных чисел Java - PullRequest
6 голосов
/ 28 ноября 2011

Мне было интересно узнать, как можно использовать атмосферный шум для генерации истинных случайных чисел.Я знаю, RANDOM.ORG делает это, но они (конечно) не объясняют, что это за процесс и как его можно реализовать.Я хотел бы знать, как этот процесс работает и как он может быть реализован в Java.Я заглянул в эту статью , но это для .net, поэтому я не понимаю этого.Я также заглянул в статью RANDOM.ORG об истинной случайности. Если кто-то может дать мне общее представление об этих работах и ​​о том, как они могут быть реализованы, это будет с благодарностью.

Ответы [ 4 ]

6 голосов
/ 15 мая 2013

Скорее всего, если вы купили компьютер в прошлом году, в него встроен генератор случайных чисел, встроенный непосредственно в процессор.Это стало доступно, когда Intel начала поставки своих процессоров Core и Xeon на базе Ivy Bridge в апреле 2012 года.

В IEEE Spectrum есть отличная статья , в которой описывается, как Intelработает цифровой генератор случайных чисел.Они в основном связали два НЕ-вентиля в петлю, создавая непредсказуемую схему, которая устанавливается в состояние 0 или 1 из-за случайных эффектов теплового шума.Тепловой шум - это просто случайные атомные колебания, которые в значительной степени являются тем же физическим явлением, которое RANDOM.ORG использует при отборе «атмосферного шума».

Для действительно глубокого анализа RNG от Intel и качестваее вывод см. в этом PDF-документе из Cryptography Research , в частности, на странице 7.

Intel добавила новую инструкцию x86 под названием RDRAND , которая позволяет программам напрямую извлекать эти аппаратные средства.генерируемые случайные числа.Начиная с Java 7, JVM еще не добавил встроенную поддержку для этой инструкции (если она когда-либо будет).

Однако возможно вызвать RDRAND из Java с использованием JNI.Именно такой подход я использовал в проекте drnglib .Например:

DigitalRandom random = new DigitalRandom();
System.out.println(random.nextInt());

Метод nextInt() реализован как собственный вызов JNI, который вызывает RDRAND.Вот соответствующий стек вызовов:

Производительность RDRAND очень хорошая.Использование drnglib с восемью потоками дает ~ 760 МБ / с случайных данных.

4 голосов
/ 28 ноября 2011

Вы должны подключить радиоприемник к вашей машине (как этот: Philips FM1236 / F ТВ-тюнер / FM-радио / видео Карта захвата PCI).

Подключите его к свободному слоту PCI, и вы сможете проверить его работу с некоторым аудиоустройством (например, VLC Player).

Затем вы настраиваете его на частоту без отправки, и ваша программа подключается к устройству, которое оно представляет, чтобы сделать аудиозахват (правильный способ сделать это зависит от используемой вами карты, но это поможет: http://docs.oracle.com/javase/tutorial/sound/capturing.html)

Затем вы обрабатываете аудиозахват самым простым способом: сохраняйте его как волну на вашем диске и читайте его байт за байтом.

2 голосов
/ 28 ноября 2011

С веб-сайта random.org :

В конце 2009 года RANDOM.ORG подверглась серьезной реструктуризации в связи с увеличением числа клиентов и их потребностей в хорошей надежности.и производительность.В настоящее время существует распределенная конфигурация, в которой несколько узлов в разных географических точках генерируют случайность, подвергают ее статистическим проверкам и затем направляют отобранные случайные биты в службу облачного хостинга, из которой запускаются службы RANDOM.ORG.Эта новая архитектура повысила надежность, а также производительность сервиса и помогает сделать RANDOM.ORG подходящим для серьезных приложений (например, лотерейных розыгрышей), которые сейчас предлагаются.Испытано и верно, случайные числа по-прежнему генерируются с атмосферным шумом, но используемое сегодня оборудование и программное обеспечение далеки от 10-долларового приемника Radio Shack, который начал все это еще в 1997 году.

Онинет изображений узлов, которые измеряют атмосферный шум, но у них есть изображения узлов радиошума.

1 голос
/ 17 января 2012

В Википедии есть интересная страница под названием Аппаратные генераторы случайных чисел .Проверьте это.Очень хорошо написано и с полезными ссылками на разных производителей.Однако некоторые из их продуктов недешевы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...