Как я понимаю, существуют два основных класса Java, которые могут выполнять псевдослучайные действия: класс Random
и класс SecureRandom
. Оба генерируют псевдослучайные числа. Однако класс SecureRandom
генерирует криптографически безопасные номера.Зачем использовать случайный класс Java, когда вы можете использовать класс SecureRandom?
Почему можно использовать класс Random
, если вы можете использовать класс SecureRandom
, который генерирует более непредсказуемые номера? Многие программисты (особенно программисты видеоигр) используют только класс Random
, но оба класса имеют почти один и тот же базовый метод (оба могут генерировать псевдослучайное целое число). Оба класса также могут быть засеяны длинным значением.
Мое единственное объяснение состоит в том, что класс Random
работает быстрее, чем класс SecureRandom
. Это правда? Если нет, то почему многие программисты Java предпочитают класс Random
чем класс SecureRandom
?
[Для начала] (HTTP: //docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html): * "[...] В зависимости от реализации методы generateSeed и nextBytes ** могут блокировать ** как энтропию собирается [...] "*. Кроме того, «Случайный» обеспечивает детерминированную случайную последовательность и, по-видимому, быстрее в большинстве реализаций. – aioobe