Автор оригинала: Pankaj Kumar.
Класс Java Random используется для генерации серии случайных чисел.
Случайный класс Java
Класс Random
является частью пакета java.util.- Экземпляр класса java Random используется для генерации случайных чисел.
- Этот класс предоставляет несколько методов для генерации случайных чисел типа integer, double, long, float и т.д.
- Алгоритм генерации случайных чисел работает на начальном значении. Если не указано, начальное значение создается из системного нанотайма.
- Если два случайных экземпляра имеют одинаковое начальное значение, то они будут генерировать одинаковую последовательность случайных чисел.
- Класс Java Random потокобезопасен, однако в многопоточной среде рекомендуется использовать
java.util.concurrent.ThreadLocalRandom
Класс. - Экземпляры случайных классов не подходят для приложений, чувствительных к безопасности, лучше использовать
java.security.SecureRandom
в этих случаях.
Случайные конструкторы Java
Случайный класс Java имеет два конструктора, которые приведены ниже:
Random()
: создает новый генератор случайных чиселСлучайное(длинное начальное значение)
: создает новый генератор случайных чисел с использованием указанного начального значения
Методы случайного класса Java
Давайте взглянем на некоторые методы класса java Random.
nextBoolean()
: Этот метод возвращает следующую псевдослучайность, которая является логическим значением из последовательности генератора случайных чисел.nextDouble()
: Этот метод возвращает следующую псевдослучайность, которая имеет двойное значение от 0,0 до 1,0.nextFloat()
: Этот метод возвращает следующую псевдослучайность, значение которой находится в диапазоне от 0,0 до 1,0.nextInt()
: Этот метод возвращает следующее значение int из последовательности генератора случайных чисел.- nextInt(int n): Этот метод возвращает псевдослучайное значение, равное значению int между 0 и заданным значением из последовательности генератора случайных чисел.
Случайный пример Java
Давайте взглянем на приведенный ниже пример случайной программы java.
package com.journaldev.examples; import java.util.Random; /** * Java Random Number Example Program * */ public class RandomNumberExample { public static void main(String[] args) { //initialize random number generator Random random = new Random(); //generates boolean value System.out.println(random.nextBoolean()); //generates double value System.out.println(random.nextDouble()); //generates float value System.out.println(random.nextFloat()); //generates int value System.out.println(random.nextInt()); //generates int value within specific limit System.out.println(random.nextInt(20)); } }
Результатом работы вышеуказанной программы является:
false 0.30986869120562854 0.6210066 -1348425743 18
Проверьте этот пост, чтобы узнать больше о генерации случайных чисел Java .
Сгенерируйте случайное число, используя начальное значение
Есть два способа, которыми мы можем сгенерировать случайное число, используя начальное значение.
Random random = new Random(long seed); Random random1 = new Random(); random1.setSeed(seed);
Начальное значение-это начальное значение внутреннего состояния генератора псевдослучайных чисел, которое поддерживается методом next(int).
package com.journaldev.examples; import java.util.Random; /** * Java Random Number Using Seed Example Program * * @author pankaj * */ public class RadomSeedExample { public static void main(String[] args) { //using constructor Random random = new Random(100); System.out.println("Using Constructor"); System.out.println(random.nextInt()); //using method Random random2 = new Random(); random2.setSeed(200); System.out.println("Using Method"); System.out.println(random2.nextInt()); } }
Результатом работы вышеуказанной программы является:
Using Constructor -1193959466 Using Method -1133938638
Что, если мы передадим одно и то же семя двум разным генераторам случайных чисел?
Давайте взглянем на приведенную ниже программу и посмотрим, что произойдет, если мы передадим одно и то же семя двум разным генераторам случайных чисел.
package com.journaldev.examples; import java.util.Random; /** * Java Random Number Using Same Seed Example Program * */ public class RandomNumberSameSeedExample { public static void main(String[] args) { //initialize two random number generators using same seed Random random1 = new Random(100); Random random2 = new Random(100); System.out.println(random1.nextInt()); System.out.println(random2.nextInt()); } }
Результатом работы вышеуказанной программы является:
-1193959466 -1193959466
Мы видим, что он будет генерировать одно и то же случайное число, если мы передадим одно и то же начальное значение двум разным генераторам случайных чисел.
Методы случайного класса Java 8
Как вы можете видеть на изображении выше, в Java 8 в случайный класс добавлено много новых методов. Эти методы могут генерировать поток случайных чисел. Ниже приведена простая программа для генерации потока из 5 целых чисел от 1 до 100.
package com.journaldev.random; import java.util.Random; import java.util.stream.IntStream; public class JavaRandomExample { public static void main(String[] args) { Random random = new Random(); // generate stream of 5 ints between 1 to 100 IntStream ints = random.ints(5, 1, 100); ints.forEach(System.out::println); } }
Это все для быстрого обзора случайного класса Java.
Ссылка: API Doc