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