Генерирането на произволни числа в 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.