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“.
„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ą).
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());
} }
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);
} }
„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“.