„Java“ atsitiktinių skaičių generavimas

Generuoti atsitiktinius skaičius „Java“ yra įprasta užduotis. Pvz., Kiekvieną kartą galbūt norėsite atlikti bandymus su atsitiktinėmis reikšmėmis. Šiame įraše mes apžvelgiame įvairius būdus, kaip galime generuoti atsitiktinius skaičius „Java“.



Kaip generuoti atsitiktinius skaičius „Java“

„Java“ sistemoje galime generuoti atsitiktinius skaičius naudodami java.util.Random klasė.

Importavę „Random“ klasę, galime iš jos sukurti objektą, suteikiantį galimybę naudoti atsitiktinius skaičius.


Pavyzdžiui, metodai nextInt() ir nextLong() pateiks skaičių, atitinkantį int ir ilgųjų duomenų tipų reikšmių diapazoną (neigiamą ir teigiamą).



Atsitiktinių Int, Long ir Boolean generavimas

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


Atsitiktinių skaičių generavimas diapazone

Kartais norime, kad atsitiktiniai skaičiai būtų generuojami iš tam tikro diapazono, pvz. tarp 1 ir 50.


Norėdami tai padaryti, galime pateikti sveiko skaičiaus parametrą nextInt() metodas. Šis parametras apibrėžia viršutinę diapazono ribą.



Čia reikia atkreipti dėmesį į tai, kad viršutinė riba nėra įtraukta į vieną iš sugeneruotų skaičių. Pavyzdžiui, nextInt(5) generuoja skaičius iš 0 į 4 imtinai.

Jei taip pat norėtume 5 norėdami būti atsitiktinių skaičių sąraše, turime naudoti 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“ saugių atsitiktinių skaičių generavimas

„Random“ klasė generuoja atsitiktinius skaičius deterministiniu būdu. Algoritmas, kuris sukuria atsitiktinumą, yra pagrįstas skaičiumi, vadinamu pradiniu. Jei sėklų skaičius yra žinomas, galima išsiaiškinti skaičius, kurie bus pagaminti iš algoritmo.


SecureRandom Tikslas Klasė yra generuoti kriptografiškai stiprius atsitiktinius skaičius.

SecureRandom turi gaminti nedeterministinę produkciją. Todėl bet kokia sėklų medžiaga pateko į SecureRandom objektas turi būti nenuspėjamas.

Žemiau pateikiamas SecureRandom naudojimo pavyzdys klasės generuoti atsitiktinius skaičius „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);
} }

Pirmiau pateikti pavyzdžiai parodo, kaip generuoti atsitiktinius skaičius „Java“.


Nuoroda: Saugus atsitiktinių skaičių generavimas