Генерація випадкових чисел у діапазоні на 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.