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.