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

1. Обзор

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

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

2.1. Math.random

Math.random дает случайное двойное значение , которое больше или равно 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

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

Если Math.random возвращает 1.0, это максимально возможный результат, тогда мы получаем:

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

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

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

2.2. java.util.Random.nextInt

Экземпляр java.util.Random также можно использовать для того же.

Воспользуемся методом 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.Random.ints

Метод java.util.Random.ints возвращает IntStream случайных целых чисел.

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

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

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

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

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

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