«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю одинаковые случайные числа при использовании одного и того же начального числа в Java?

Почему я получаю одинаковые случайные числа при использовании одного и того же начального числа в Java?

Опубликовано 9 ноября 2024 г.
Просматривать:482

Why do I get identical random numbers when using the same seed in Java?

Случайные числа Java с фиксированным начальным числом: почему одинаковые выходные данные?

В своем коде вы определили метод генерации случайных чисел с использованием определенное семя. Однако вы заметили, что когда вы предоставляете одно и то же начальное число, все 100 сгенерированных чисел идентичны.

Такое поведение ожидаемо, поскольку использование одного и того же начального числа в конструкторе Random приводит к предсказуемой последовательности чисел. Начальное значение — это начальное значение, которое инициализирует генератор случайных чисел. Это важная функция для тестирования, поскольку она позволяет получать стабильные результаты при повторном запуске тестов.

Понимание принципов генерации псевдослучайных чисел

Генератор псевдослучайных чисел (PRNG), таких как Random в Java генерировать последовательности, близкие к истинной случайности. Однако у них есть небольшой набор начальных значений, включая начальное число, которое полностью определяет последовательность.

Исправление кода

Чтобы генерировать разные последовательности случайных чисел, вам следует избегать использования одного и того же семени каждый раз. Вместо этого создайте экземпляр Random вне вашего метода и инициализируйте его без аргументов. Этот экземпляр будет использовать метод nanoTime для генерации уникального начального значения.

Вот исправленный код:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

Благодаря этому изменению вы будете получать разные последовательности случайных чисел каждый раз при вызове метода randomGenerator.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3