Véletlen számok széles körben használják a programozásban játékbiztonsági szimulációkhoz stb. Számos módja van véletlen számok generálására a Java beépített metódusaival és osztályaival. Az alábbiakban felsoroljuk a leggyakrabban használt módszereket:
- java.util.Véletlenszerű osztály
- Math.random() metódus (dupla értéket ad vissza)
- ThreadLocalRandom osztály (bevezetve a Java 7-ben)
Vizsgáljuk meg ezeket a megközelítéseket egyenként részletesen
1. A java.util.Random használata
Ennek az osztálynak a segítségével különféle típusú véletlenszámokat generálhatunk (int double long boolean stb.).
Főbb módszerek:
- nextInt(): Ez a módszer véletlen egész számot generál (teljes tartomány, beleértve a negatívokat is)
- nextInt(int kötött): Ez a módszer véletlenszerű egész számot generál 0 (beleértve) és kötött (kizárólag) között.
- nextDouble(): Ez a módszer véletlenszerű duplát generál 0,0 (beleértve) és 1,0 (kizárólag) között.
- nextBoolean(): Véletlenszerűen igaz vagy hamis
Példa :
mi az a desktop.iniJava
// Generating random number using java.util.Random; import java.util.Random; public class Geeks{ public static void main(String[] args) { // Creating the instance of Random class Random r= new Random(); // Generate random integers in range 0 to 999 int r1 = r.nextInt(1000); int r2 = r.nextInt(1000); // Printing random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate random doubles double rd1 = r.nextDouble(); double rd2 = r.nextDouble(); // Printing random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); } }
Kimenet
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275
Számok generálása egy meghatározott tartományban
Az alábbiakban felsoroljuk az adott tartományú véletlen szám generálására szolgáló képletet:
Véletlenszerű rand = new Random();
int randomNum = rand.nextInt(max - min + 1) + min;
Jegyzet: min és max az alsó és felső számhatárunk.
Példa:
Java// Generating random number in a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { Random r = new Random(); int max=100min=50; System.out.println('Generated numbers are within '+ min +' to '+ max); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); } }
Kimenet
Generated numbers are within 50 to 100 55 51 51
2. A Math.random()
A Matek óra különböző módszereket tartalmaz különféle numerikus műveletek végrehajtására, például hatványozási logaritmusok kiszámítására stb. Az egyik ilyen módszer a véletlen() ez a metódus kettős értéket ad vissza pozitív előjellel, amely nagyobb vagy egyenlő, mint 0, és kisebb, mint 1,0. A visszaadott értékek pszeudo véletlenszerűen kerülnek kiválasztásra. Ez a módszer csak Doubles típusú véletlen számokat tud generálni.
Példa:
könyvtár átnevezése LinuxJava
// Java program to demonstrate working of // Math.random() to generate random numbers import java.util.*; public class Geeks { public static void main(String args[]) { // Generating random doubles System.out.println('Random doubles: ' + Math.random()); System.out.println('Random doubles: ' + Math.random()); } }
Kimenet
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417
Számok generálása egy meghatározott tartományban
Íme a képlet egy véletlen szám generálására meghatározott tartománnyal, ahol a min és max a szám alsó és felső határa:
int randomNum = min + (int)(Math.random() * ((max - min) + 1));
Példa:
Java// Demonstrating how to generate random // number within a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { int max=100min=50; System.out.println('Generated numbers are within '+min+' to '+max); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); } }
Kimenet
Generated numbers are within 50 to 100 82 68 77
3. A ThreadLocalRandom használata
Ez az ajánlott módszer többszálú környezetekben, mivel csökkenti a versengéseket.
Főbb módszerek:
latex szövegméretek
- jelenlegi().nextInt(): Véletlenszerű egész szám (teljes tartomány)
- current().nextInt(min max + 1): Véletlenszerű egész szám a tartományban (hozzáadtam ezt a korlátos példát)
- current().nextDouble(): Véletlenszerű dupla (0,0–1,0)
- current().nextBoolean(): Véletlenszerűen igaz vagy hamis
Példa:
Java// Demonstrates how to generate random integers // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks { public static void main(String[] args) { // Generate random integers in range 0 to 999 // Random number between 0 and 999 int r1 = ThreadLocalRandom.current().nextInt(1000); // Random number between 0 and 999 int r2 = ThreadLocalRandom.current().nextInt(1000); // Print random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate Random doubles between 0.0 (inclusive) // and 1.0 (exclusive) double rd1 = ThreadLocalRandom.current().nextDouble(); double rd2 = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); // Generate random booleans boolean rb1 = ThreadLocalRandom.current().nextBoolean(); boolean rb2 = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Random Booleans: ' + rb1); System.out.println('Random Booleans: ' + rb2); } }
Kimenet
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false