Генерация случайных чисел в Java

Генерация серии случайные числа это одна из тех общих задач, которые возникают время от времени. В Джава, это может быть достигнуто просто с помощью java.util. Случайный класс.

Первый шаг, как и при использовании любого API учебный класс, должен поставить оператор импорта перед началом класса вашей программы:

Затем создайте объект Random:

Случайный объект предоставляет вам простой генератор случайных чисел. Методы объекта дают возможность выбирать случайные числа. Например, методы nextInt () и nextLong () вернут число, находящееся в диапазоне значений (отрицательных и положительных) для типов данных int и long соответственно:

Возвращенные числа будут случайным образом выбранными int и long значениями:

Выбор случайных чисел из определенного диапазона

Обычно генерируемые случайные числа должны быть в определенном диапазоне (например, от 1 до 40 включительно). Для этого метод nextInt () также может принимать параметр int. Он обозначает верхний предел диапазона чисел. Однако номер верхнего предела не входит в число чисел, которые можно выбрать. Это может показаться странным, но метод nextInt () работает с нуля и выше. Например:

instagram viewer

выберет только случайное число от 0 до 39 включительно. Чтобы выбрать из диапазона, который начинается с 1, просто добавьте 1 к результату метода nextInt (). Например, чтобы выбрать число от 1 до 40 включительно, добавьте его к результату:

Если диапазон начинается с большего числа, чем вам, вам необходимо:

  • минус начальный номер из верхнего предельного числа, а затем добавить один.
  • добавьте начальный номер к результату метода nextInt ().

Например, чтобы выбрать число от 5 до 35 включительно, верхний предел будет 35-5 + 1 = 31, и к результату необходимо добавить 5:

Насколько случайно случайный класс?

Следует отметить, что класс Random генерирует случайные числа детерминированным образом. Алгоритм, который производит случайность, основан на числе, называемом начальным числом. Если начальный номер известен, то можно вычислить числа, которые будут получены из алгоритма. Чтобы доказать это, я буду использовать числа с даты Нил Армстронг впервые ступил на Луну как мой номер семени (20 июля 1969 г.):

Независимо от того, кто запускает этот код, последовательность «случайных» чисел будет:

По умолчанию номер семени, который используется:

текущее время в миллисекундах с 1 января 1970 года. Обычно это даст достаточно случайных чисел для большинства целей. Однако обратите внимание, что два генератора случайных чисел, созданные в течение одной миллисекунды, будут генерировать одинаковые случайные числа.

Также будьте осторожны при использовании класса Random для любого приложения, которое должно иметь безопасный генератор случайных чисел (например, программу азартных игр). Может быть возможно угадать начальный номер на основе времени, в которое приложение работает. Как правило, для приложений, где случайные числа являются абсолютно критическими, лучше всего найти альтернативу объекту Random. Для большинства приложений, где просто необходим определенный случайный элемент (например, игра в кости для настольной игры), тогда он работает нормально.

instagram story viewer