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.