Генерация случайных чисел Java

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



Как сгенерировать случайные числа в Java

В Java мы можем генерировать случайные числа, используя java.util.Random класс.

После импорта класса Random мы можем создать из него объект, который дает нам возможность использовать случайные числа.


Например, методы nextInt() и nextLong() вернет число, которое находится в диапазоне значений (отрицательного и положительного) типов данных int и long соответственно.



Генерация случайных чисел типа Int, Long и Boolean

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
System.out.println('Random integer: ' + rand.nextInt());
System.out.println('Random long: ' + rand.nextLong());
System.out.println('Random boolean: ' + rand.nextBoolean());
} }


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

Иногда мы хотим, чтобы случайные числа генерировались из определенного диапазона, например от 1 до 50.


Для этого мы можем предоставить целочисленный параметр для nextInt() метод. Этот параметр определяет верхний предел диапазона.

Здесь следует отметить, что число верхнего предела не входит в число генерируемых чисел. Например, nextInt(5) генерирует числа из 0 к 4 включительно.

Если мы тоже хотим 5 чтобы оказаться в списке случайных чисел, нам нужно использовать nextInt(5)+1

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
int randInt = rand.nextInt(5) + 1;
System.out.println('Random integer: ' + randInt);
} }


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

Класс Random генерирует случайные числа детерминированным способом. Алгоритм, производящий случайность, основан на числе, называемом начальным числом. Если начальное число известно, то можно вычислить числа, которые будут получены с помощью алгоритма.


Цель SecureRandom Класс предназначен для генерации криптографически стойких случайных чисел.

SecureRandom должен производить недетерминированный результат. Следовательно, любой посевной материал передается в SecureRandom объект должен быть непредсказуемым.

Ниже приведен пример использования SecureRandom класс для генерации случайных чисел в Java

import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.SecureRandom; public class GenerateRandomNumbers {
static SecureRandom secureRandomGenerator;
public static void main(String[] args) {


try {

secureRandomGenerator = SecureRandom.getInstance('SHA1PRNG', 'SUN');
}

catch (NoSuchAlgorithmException | NoSuchProviderException e) {
}

//Get random integer in range
int randInRange = secureRandomGenerator.nextInt(499);
System.out.println(randInRange);
} }

Приведенные выше примеры иллюстрируют, как генерировать случайные числа в Java.


Справка: Безопасная генерация случайных чисел