Истинное случайное поколение в Java

Я подробно ответил на ваш вопрос: http://mathiasbynens.be/notes/css-escapes

В статье также объясняется, как избежать любого символа в CSS (и JavaScript), и я сделал удобным инструментом для этого. На этой странице:

Если вам нужно присвоить элементу идентификационное значение ~!@$%^&*()_+-=,./';:"?><[]{}|`#, селектор будет выглядеть так:

CSS:


JavaScript:


blockquote>

23
задан tvanfosson 19 December 2008 в 14:30
поделиться

11 ответов

Выезд http://random.org/

RANDOM.ORG является истинным сервисом случайного числа, который генерирует случайность через атмосферные помехи.

библиотека Java для взаимодействия через интерфейс с ним может быть найдена здесь: http://sourceforge.net/projects/trng-random-org/

27
ответ дан Greg Dean 29 November 2019 в 00:43
поделиться

Ваш вопрос неоднозначен, который заставляет ответы быть повсеместно.

, Если Вы ищете Случайную реализацию, которая полагается на источник системы случайности (поскольку я предполагаю Вас), тогда javax.crypto. SecureRandom делает это. Конфигурация по умолчанию для поставщика систем обеспечения безопасности Sun в Вашем java.security файле имеет следующее:

#
# Select the source of seed data for SecureRandom. By default an
# attempt is made to use the entropy gathering device specified by
# the securerandom.source property. If an exception occurs when
# accessing the URL then the traditional system/thread activity
# algorithm is used.
#
# On Solaris and Linux systems, if file:/dev/urandom is specified and it
# exists, a special SecureRandom implementation is activated by default.
# This "NativePRNG" reads random bytes directly from /dev/urandom.
#
# On Windows systems, the URLs file:/dev/random and file:/dev/urandom
# enables use of the Microsoft CryptoAPI seed functionality.
#
securerandom.source=file:/dev/urandom

, Если Вы действительно спрашиваете о переопределении этого с чем-то еще более действительно случайным, оно может быть сделано или путем изменения этого свойства, или при помощи другого SecureRandom. Например, Вы могли использовать поставщика JCE, поддержанного модулем HSM такой как nCipher nShield, который имеет его собственный PRNG или другие решения, упомянутые в потоке.

21
ответ дан ykaganovich 29 November 2019 в 00:43
поделиться

Начиная с наслаждения теми источниками случайных данных потребовал бы аппаратного доступа некоторого вида, который такая библиотека не может быть записана портативно с помощью чистого Java.

можно однако попытаться записать зависимый от платформы код для чтения источника платформ случайных данных. Для Linux (и возможно другие подобные Unix системы также), который мог быть /dev/random, например.

кроме того, посмотрите класс SecureRandom , он мог бы уже иметь то, что Вы хотите.

8
ответ дан Joachim Sauer 29 November 2019 в 00:43
поделиться

Быстрый и грязный:

public static int generateRandom() throws IOException
{
    int num = 0;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    for (int i = 0 ; i < Integer.SIZE ; i++)
    {
        System.out
          .println("Flip a fair coin. Enter h for heads, anything else for tails.");

        if (br.readLine().charAt(0) == 'h')
        {
            num += Math.pow(2, i);
        }
    }

    return num;
}
8
ответ дан Adam Jaskiewicz 29 November 2019 в 00:43
поделиться

Убедитесь, что Вы действительно хотите "истинные" случайные числа. Должны быть измерены физические источники случайности, и измерительный процесс представляет некоторую предвзятость. Для некоторых приложений "псевдо" случайные числа на самом деле предпочтительны для "истинных" случайных чисел. У них могут быть лучшие статистические свойства, и можно генерировать их быстрее. С другой стороны, Вы можете охота сами в ноге с генераторами псевдослучайного числа, если Вы не осторожны.

6
ответ дан John D. Cook 29 November 2019 в 00:43
поделиться

Ава J Криптографическая Архитектура требует криптографически сильных случайных чисел. Это содержит класс SecureRandom , упомянутый @saua.

4
ответ дан tvanfosson 29 November 2019 в 00:43
поделиться

Нет никакого верен генератор случайных чисел, так как они все полагаются так или иначе на детерминированные процедуры для вычисления случайного числа, таким образом, неважно, как сгенерированные числа, кажется, следуют за истинным случайным распределением, они могли бы быть частью скрытого - и очень сложный - шаблон, следовательно они Псевдослучайные . Однако можно реализовать собственный генератор случайных чисел, существует несколько хороших, вычислительно-дешевых методов, которые можно прочитать в Числовые Рецепты в C, Втором Выпуске - Раздел 7 . HTH

3
ответ дан Josef 29 November 2019 в 00:43
поделиться

Кавычка Википедии: John von Neumann заметно сказал "Любого, кто использует арифметические методы для создания случайных чисел, в состоянии греха".

2
ответ дан tuinstoel 29 November 2019 в 00:43
поделиться

Для большинства целей псевдослучайных чисел более чем достаточно. Если вам просто нужно простое случайное число, т.е. в 30% случаев сделайте это, тогда вам нужна временная метка как начальное число. Если это должно быть безопасное случайное число, например, перетасовывание колоды, вы хотите более тщательно выбирать свое семя, есть хорошие источники для создания безопасных семян.

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

Для лучшего PRNG, чем в комплекте с Java, взгляните на Mersenne Twister .

2
ответ дан Guðmundur Bjarni 29 November 2019 в 00:43
поделиться

В колледже у меня была задача реализовать случайный генератор. Я создал генератор случайных чисел как это: созданное настольное окно и попросило, чтобы пользователь нажал на случайные места на окне после каждого щелчка, я взял координаты нажатой точки. Это было довольно случайно, я думаю.

1
ответ дан 29 November 2019 в 00:43
поделиться

См. Также этот вопрос SO: Альтернативные источники энтропии

Я нашел HotBits несколько лет назад - числа генерируются из радиоактивного распада, действительно случайных чисел.

Явная библиотека для доступа доступна на randomx

Существуют ограничения на количество номеров, которые вы можете скачать в день, но меня всегда удивляло, что я могу использовать их по-настоящему действительно случайные семена для ГСЧ.

1
ответ дан Community 29 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: