Генерация случайных чисел в Java - обычная задача. Например, вы можете каждый раз выполнять тесты со случайными значениями. В этом посте мы рассмотрим различные способы генерации случайных чисел в Java.
В Java мы можем генерировать случайные числа, используя java.util.Random
класс.
После импорта класса Random мы можем создать из него объект, который дает нам возможность использовать случайные числа.
Например, методы nextInt()
и nextLong()
вернет число, которое находится в диапазоне значений (отрицательного и положительного) типов данных int и long соответственно.
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);
} }
Класс 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.
Справка: Безопасная генерация случайных чисел