Tilfældige tal bruges i vid udstrækning i programmering til simuleringer af gamingsikkerhed osv. Der er flere måder at generere tilfældige tal på ved hjælp af indbyggede metoder og klasser i Java. De mest almindeligt anvendte metoder er angivet nedenfor:
- java.util.Random klasse
- Math.random() metode (returnerer dobbelte værdier)
- ThreadLocalRandom klasse (introduceret i Java 7)
Lad os undersøge hver af disse tilgange en efter en i detaljer
1. Brug af java.util.Random
Ved hjælp af denne klasse kan vi generere tilfældige tal af forskellige typer (int double long boolean osv.).
Nøglemetoder:
- nextInt(): Denne metode genererer et tilfældigt heltal (fuldt interval inklusive negative tal)
- nextInt(int bundet): Denne metode genererer et tilfældigt heltal mellem 0 (inklusive) og bundet (eksklusiv)
- nextDouble(): Denne metode genererer en tilfældig fordobling mellem 0,0 (inklusive) og 1,0 (eksklusiv)
- nextBoolean(): Tilfældigt sandt eller falsk
Eksempel :
Java// 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); } }
Produktion
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275
Generering af tal i et specifikt område
Formlen til at generere et tilfældigt tal med et specifikt interval er angivet nedenfor:
Random rand = new Random();
int randomNum = rand.nextInt(max - min + 1) + min;
Note: min og max er vores nedre og højere grænse for antal.
Eksempel:
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); } }
Produktion
Generated numbers are within 50 to 100 55 51 51
2. Brug af Math.random()
De Matematik klasse indeholder forskellige metoder til at udføre forskellige numeriske operationer såsom beregning af eksponentieringslogaritmer osv. En af disse metoder er tilfældig() denne metode returnerer en dobbelt værdi med et positivt fortegn større end eller lig med 0,0 og mindre end 1,0. De returnerede værdier vælges pseudo tilfældigt. Denne metode kan kun generere tilfældige tal af typen Doubles.
Eksempel:
Java// 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()); } }
Produktion
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417
Generering af tal i et specifikt område
Her er formlen til at generere et tilfældigt tal med et specifikt område, hvor min og maks er vores nedre og højere grænse for antal:
int randomNum = min + (int)(Math.random() * ((max - min) + 1));
Eksempel:
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))); } }
Produktion
Generated numbers are within 50 to 100 82 68 77
3. Brug af ThreadLocalRandom
Dette er den anbefalede måde i miljøer med flere tråde, da det reducerer stridigheder.
Nøglemetoder:
- nuværende().nextInt(): Tilfældigt heltal (fuld rækkevidde)
- nuværende().nextInt(min maks + 1): Tilfældigt heltal i området (jeg har tilføjet dette afgrænsede eksempel)
- nuværende().nextDouble(): Tilfældig dobbelt (0,0 til 1,0)
- nuværende().nextBoolean(): Tilfældigt sandt eller falsk
Eksempel:
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); } }
Produktion
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false