Генерация случайных чисел в диапазоне

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Java предоставляет несколько встроенных методов для генерации случайных чисел в своих классах Math и Random. Однако генерация случайных чисел в заданном диапазоне может представлять собой сложность. В этом лабораторном задании вы изучите различные методы генерации случайных чисел в заданном диапазоне, в том числе:


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/output("Output") java/BasicSyntaxGroup -.-> java/math("Math") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/FileandIOManagementGroup -.-> java/stream("Stream") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") subgraph Lab Skills java/output -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} java/math -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} java/method_overloading -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} java/classes_objects -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} java/stream -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} java/math_methods -.-> lab-117409{{"Генерация случайных чисел в диапазоне"}} end

Генератор случайных чисел с использованием класса Math

Мы можем использовать метод Math.random() для генерации значения типа float в диапазоне от 0 до 1, что подходит для генерации случайных чисел. Тем не менее, генерация значений типа float в определенном диапазоне представляет собой сложность.

В этом методе мы сгенерируем случайное число между min и max (включая min и исключая max), используя формулу метода Math.random().

Вот пример кода:

public static int randomNumberGenerator(int min, int max) {
    double r = Math.random();
    int randomNum = (int) (r * (max - min)) + min;
    return randomNum;
}

Для использования этого метода вызовите метод randomNumberGenerator() и передайте целые числа - аргументы минимального и максимального диапазонов; метод вернет случайное целое число в заданном диапазоне.

Вот код, который использует метод randomNumberGenerator() для генерации двух случайных чисел; первое должно быть в диапазоне от 5 до 105, а второе - в диапазоне от 2199 до 2200.

int r1 = randomNumberGenerator(5, 105);
int r2 = randomNumberGenerator(2199, 2200);

Для выполнения этого метода выполните следующие команды в терминале:

$ cd project
$ touch RandomNumbers.java
// вставьте код
$ javac RandomNumbers.java
$ java RandomNumbers

Генератор случайных чисел с использованием класса Random

Другой способ генерации случайных чисел в заданном диапазоне - это использование метода nextInt() в классе Random.

Метод nextInt() генерирует целочисленное значение в диапазоне [0, n).

public static int randomNumberGenerator(int min, int max) {
    Random r = new Random();
    int randomNum = r.nextInt(max - min) + min;
    return randomNum;
}

Этот метод принимает параметры min и max и возвращает случайное целое число в указанном диапазоне. В этом методе nextInt() генерирует случайное число от 0 до (max - min), а затем мы добавляем значение min, чтобы получить окончательное случайное число.

Вот код, который использует метод randomNumberGenerator() для генерации двух случайных чисел; первое должно быть в диапазоне от 500 до 2000, а второе - в диапазоне от 500 до 501.

int randomNum1 = randomNumberGenerator(500, 2000);
int randomNum2 = randomNumberGenerator(500, 501);

Для выполнения этого метода выполните следующие команды в терминале:

$ cd project
$ touch RandomNumbers.java
// вставьте код
$ javac RandomNumbers.java
$ java RandomNumbers

Использование метода ints() класса Random

Мы также можем использовать метод ints() класса Random для генерации потока случайных целых чисел в заданном диапазоне.

Вот код для генерации потока:

Random r = new Random();
IntStream stream = r.ints(5, 100, 120);

Здесь метод ints() принимает три параметра: первый - параметр count, который определяет, сколько целых чисел мы хотим сгенерировать, и параметр bound, который определяет диапазон. Например, в нашем коде параметр bound находится в диапазоне от 100 до 120. Это параметр с включительным минимумом (100) и исключительным максимумом (120).

После создания этого потока мы можем его использовать с помощью forEach() или собрать в коллекцию, такой как List или массив.

Вот код, который использует метод ints() для генерации пяти случайных целых чисел между 150 и 2000:

int min = 150; // определение минимального диапазона
int max = 2000; // определение максимального диапазона

Random r = new Random();
IntStream stream = r.ints(5, min, max); // генерация случайного потока
int randomNum = stream.findFirst().getAsInt(); // получение первого значения из потока

System.out.print("The random number is: " + randomNum); // вывод случайного числа

Для выполнения этого метода выполните следующие команды в терминале:

$ cd project
$ touch RandomNumbers.java
// вставьте код
$ javac RandomNumbers.java
$ java RandomNumbers

Обзор

Генерация случайных чисел в заданном диапазоне в Java является важной задачей для многих приложений. В этом лабораторном задании вы узнали несколько методов генерации случайных чисел в диапазоне, таких как использование Math.random(), Random.nextInt() и Random.ints(). Каждый метод имеет свои достоинства и недостатки, и вы должны выбрать тот, который лучше подходит для ваших потребностей.