При разработке приложений часто нужно генерировать случайные числа. Java предоставляет для этого классы java.lang.Math и java.util.Random . В этой статье я расскажу о нескольких способах генерации случайных чисел и приведу конкретные примеры реализации.
Содержание
- Генерация случайных чисел с помощью класса Math
- Случайные числа в заданном диапазоне
- Случайное двойное число в заданном диапазоне
- Случайное целое число в заданном диапазоне
- Генерация случайных чисел с помощью класса Random
- Особенности генерации случайных чисел в Java 8
- Заключение
- Содержание
- Описание
- Синтаксис
- Параметры
- Генерация случайных чисел с помощью класса Math
- Случайные числа в заданном диапазоне
- Случайное двойное число в заданном диапазоне
- Случайное целое число в заданном диапазоне
- Генерация случайных чисел с помощью класса Random
- Особенности генерации случайных чисел в Java 8
- Заключение
- Содержание
- Описание
- Синтаксис
- Параметры
Генерация случайных чисел с помощью класса Math
Для генерации случайных чисел Java предоставляет класс Math, доступный в пакете java.util. Этот класс содержит статичный метод Math.random(), предназначенный для генерации случайных чисел типа double .
Метод random( ) возвращает положительное число большее или равное 0,0 и меньшее 1,0. При вызове данного метода создается объект генератора псевдослучайных чисел java.util.Random.
Math.random() можно использовать с параметрами и без. В параметрах задается диапазон чисел, в пределах которого будут генерироваться случайные значения.
Пример использования Math.random():
Метод getRandomNumber( ) использует Math.random() для возврата положительного числа, которое больше или равно 0,0 или меньше 1,0 .
Результат выполнения кода:
Случайные числа в заданном диапазоне
Для генерации случайных чисел в заданном диапазоне необходимо указать диапазон. Синтаксис:
Разобьем это выражение на части:
- Сначала умножаем диапазон значений на результат, который генерирует метод random().Math.random() * (max — min)возвращает значение в диапазоне [0 , max- min], где max не входит в заданные рамки. Например, выражение Math.random()*5 вернет значение в диапазоне [0 , 5], в который 5 не входит.
- Расширяем охват до нужного диапазона. Это делается с помощью минимального значения.
Но выражение по-прежнему не охватывает максимальное значение.
- Чтобы получить максимальное значение, прибавьте 1 к параметру диапазона (max — min). Это вернет случайное число в указанном диапазоне.
Существуют различные способы реализации приведенного выше выражения. Рассмотрим некоторые из них.
Случайное двойное число в заданном диапазоне
По умолчанию метод Math.random() при каждом вызове возвращает случайное число типа double . Например:
Вы можете вызвать предыдущий метод из метода main, передав аргументы, подобные этому.
Случайное целое число в заданном диапазоне
Пример генерации случайного целочисленного значения в указанном диапазоне:
Метод getRandomIntegerBetweenRange() создает случайное целое число в указанном диапазоне. Так как Math.random() генерирует случайные числа с плавающей запятой, то нужно привести полученное значение к типу int. Этот метод можно вызвать из метода main, передав ему аргументы следующим образом:
Примечание . В аргументах также можно передать диапазон отрицательных значений, чтобы сгенерировать случайное отрицательное число в этом диапазоне.
Генерация случайных чисел с помощью класса Random
Класс java.util.Random можно применять для генерации случайных чисел различных типов: int, float, double, long и boolean .
Для этого сначала создайте экземпляр класса Random, а затем вызовите один из методов генератора случайных значений: nextInt( ), nextDouble( ) или nextLong( ).
Метод nextInt( ) класса Random принимает граничное целое число и возвращает случайное значение int от 0 (включительно) до указанного предела (не включая).
Пример использования метода nextInt( ):
Пример использования метода nextInt ( ) для генерации целого числа в заданном диапазоне:
Методы nextFloat ( ) и nextDouble( ) позволяют генерировать числа с плавающей запятой, а также значения типа double в диапазоне от 0,0 до 1,0.
Код для использования обоих методов:
Особенности генерации случайных чисел в Java 8
В Java 8 был представлен новый метод класса java.util.Random — ints(). Он возвращает неограниченный поток псевдослучайных значений int. Данный метод позволяет указать диапазон чисел, задав минимальное и максимальное значения.
Пример использования метода Random.ints() для генерации случайных целочисленных значений в указанном диапазоне:
Метод getRandomNumberInts( ) генерирует поток случайных целых чисел от min(включительно) и до max (не входит в диапазон).
Метод ints( ) создает IntStream, поэтому будет вызвана функция findFirst( ). Она возвращает объект OptionalInt , который описывает первый элемент этого потока. Затем код вызывает метод getAsInt( ), чтобы вернуть значение int в OptionalInt.
Пример использования метода Random.ints() для генерации потока случайных целочисленных значений:
Код для вызова предыдущего метода:
Результат работы приведенного выше кода:
Пример использования метода Random.ints() для генерации потока из диапазона случайных целочисленных значений:
Код для вызова приведенного выше метода:
Результат работы предыдущего примера:
Кроме ints( ) существует еще несколько методов, которые были добавлены к классу Random в Java 8. Они могут возвращать последовательный поток случайных чисел. Это:
- LongStream longs( );
- DoubleStream doubles( ).
Заключение
Класс java.util.Random реализует линейный конгруэнтный генератор (LCG). Он отличается быстротой работы. Но при этом он не подходит для использования в режиме реального времени. Например, для генерации уникального идентификатора сессии на сервере, в научных экспериментах, криптографии лотереях и розыгрышах.
Данная публикация представляет собой перевод статьи « Random Number Generation in Java » , подготовленной дружной командой проекта Интернет-технологии.ру
Содержание
Описание
Метод Math.random() — в Java используется для генерации случайного числа в диапазоне от 0.0 до 1.0. Различные диапазоны могут быть достигнуты с помощью арифметики.
Синтаксис
Параметры
Подробная информация о параметрах:
- Метод по умолчанию не принимает параметр.
- написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
- это одна из статей из нашего «Самоучителя по Java»
Генерация случайных чисел в Java — важная и нужная тема. Действительно, она Вам понадобится неисчислимое количество раз.
- при заполнении массива случайными числами
- при перетасовке колоды карт
- при выборе случайного элемента из последовательности
- и т.д.
Источник: