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 .