Рубрики
Без рубрики

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

Узнайте об альтернативных способах генерации случайных чисел в пределах диапазона на Java.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы рассмотрим различные способы генерации случайных чисел в определенном диапазоне.

Дальнейшее чтение:

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

Java – Случайные длинные, Плавающие, Целочисленные и Двойные

Java – Генерирует Случайную Строку

2. Генерация случайных чисел в диапазоне

2.1. Математика.случайная

То То дает случайный двойной значение, которое больше или равно 0,0 и меньше 1,0.

Давайте используем метод Math.random для генерации случайного числа в заданном диапазоне [мин, макс) :

public int getRandomNumber(int min, int max) {
    return (int) ((Math.random() * (max - min)) + min);
}

Почему это работает? Что ж, давайте посмотрим, что происходит, когда Math.random возвращает 0.0, что является минимально возможным результатом:

0.0 * (max - min) + min => min

Итак, самое низкое число, которое мы можем получить, – это мин.

Поскольку 1.0 является исключительной верхней границей Math.random , мы получаем:

1.0 * (max - min) + min => max - min + min => max

Следовательно, исключительная верхняя граница возврата нашего метода равна max.

Давайте посмотрим, как этот же шаблон повторится с Random#nextInt в следующем разделе.

2.2. java.util.Случайный.Следующий

Мы также можем использовать экземпляр java.util.Случайный чтобы сделать то же самое.

Давайте воспользуемся java.util.Random.nextInt метод получения случайного числа:

public int getRandomNumberUsingNextInt(int min, int max) {
    Random random = new Random();
    return random.nextInt(max - min) + min;
}

Параметр min (начало координат) является включающим, в то время как верхняя граница max является исключительной.

2.3. java.util.Случайные.ints

То То метод возвращает внутренний поток случайных целых чисел.

Таким образом, мы можем использовать java.util.Random.int метод и возвращает случайное число:

public int getRandomNumberUsingInts(int min, int max) {
    Random random = new Random();
    return random.ints(min, max)
      .findFirst()
      .getAsInt();
}

Здесь также указанное начало координат min является включительным, а max является исключительным.

3. Заключение

В этой статье мы рассмотрели альтернативные способы генерации случайных чисел в пределах диапазона.

Фрагменты кода, как всегда, можно найти на GitHub .