Генерација на случаен број на Java

Генерирање случајни броеви во Јава е вообичаена задача. На пример, можеби ќе сакате да извршите тестови со случајни вредности секој пат. Во овој пост, разгледуваме различни начини на кои можеме да генерираме случајни броеви во Јава.



Како да генерирате случајни броеви во Јава

Во Јава, можеме да генерираме случајни броеви со користење на java.util.Random класа

Откако ќе ја увеземе Случајната класа, можеме да создадеме објект од неа што ни дава можност да користиме случајни броеви.


На пример, методи nextInt() и nextLong() ќе врати број што е во опсегот на вредности (негативни и позитивни) соодветно од типот int и долги податоци.



Генерирање случајни 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);
} }


Генерирање безбедни случајни броеви во Јава

Случајната класа генерира случајни броеви на детерминистички начин. Алгоритмот што ја произведува случајноста се заснова на број наречен семе. Ако бројот на семе е познат, тогаш е можно да се откријат броевите што ќе бидат произведени од алгоритмот.


Целта на SecureRandom Класа е да се генерираат криптографски силни случајни броеви.

SecureRandom мора да произведе не-детерминистички излез. Затоа, секој семе материјал пренесува на SecureRandom објектот мора да биде непредвидлив.

Подолу е дадена пример за употреба на SecureRandom класа да генерира случајни броеви во Јава

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);
} }

Горенаведените примери илустрираат како да генерирате случајни броеви во Јава.


Референца: Безбедна генерација на случаен број