Автор оригинала: 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