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.