Java bietet drei Möglichkeiten zum Generieren von Zufallszahlen mithilfe einiger integrierter Methoden und Klassen, wie unten aufgeführt:
- java.util.Random-Klasse Math.random-Methode: Kann Zufallszahlen vom Typ Double generieren. ThreadLocalRandom-Klasse
1) java.util.Random
- Um diese Klasse zum Generieren von Zufallszahlen zu verwenden, müssen wir zunächst eine Instanz dieser Klasse erstellen und dann mithilfe dieser Instanz Methoden wie nextInt(), nextDouble(), nextLong() usw. aufrufen.
- Mit dieser Klasse können wir Zufallszahlen der Typen Integer, Float, Double, Long und Booleans generieren.
- Wir können Argumente an die Methoden übergeben, um eine Obergrenze für den Bereich der zu generierenden Zahlen festzulegen. nextInt(6) generiert beispielsweise Zahlen im Bereich von 0 bis einschließlich 5.
Java
// A Java program to demonstrate random number generation> // using java.util.Random;> import> java.util.Random;> > public> class> generateRandom{> > >public> static> void> main(String args[])> >{> >// create instance of Random class> >Random rand =>new> Random();> > >// Generate random integers in range 0 to 999> >int> rand_int1 = rand.nextInt(>1000>);> >int> rand_int2 = rand.nextInt(>1000>);> > >// Print random integers> >System.out.println(>'Random Integers: '>+rand_int1);> >System.out.println(>'Random Integers: '>+rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = rand.nextDouble();> >double> rand_dub2 = rand.nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '>+rand_dub1);> >System.out.println(>'Random Doubles: '>+rand_dub2);> >}> }> |
Ausnahmebehandlung Java
>
>Ausgabe
Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>
2) Math.random()
Die Klasse Math enthält verschiedene Methoden zum Durchführen verschiedener numerischer Operationen wie zum Beispiel die Berechnung von Potenzierungen, Logarithmen usw. Eine dieser Methoden ist random(). Diese Methode gibt einen Double-Wert mit einem positiven Vorzeichen zurück, der größer oder gleich 0,0 und kleiner als 1,0 ist . Die zurückgegebenen Werte werden pseudozufällig ausgewählt. Diese Methode kann nur Zufallszahlen vom Typ Doubles generieren. Das folgende Programm erklärt, wie diese Methode verwendet wird:
Java
// Java program to demonstrate working of> // Math.random() to generate random numbers> import> java.util.*;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generating random doubles> >System.out.println(>'Random doubles: '> + Math.random());> >System.out.println(>'Random doubles: '> + Math.random());> >}> }> |
>
>Ausgabe
Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>
3) java.util.concurrent.ThreadLocalRandom-Klasse
Diese Klasse wurde in Java 1.7 eingeführt, um Zufallszahlen vom Typ Ganzzahlen, Doppelzahlen, Boolesche Werte usw. zu generieren. Das folgende Programm erklärt, wie diese Klasse zum Generieren von Zufallszahlen verwendet wird:
Java
// Java program to demonstrate working of ThreadLocalRandom> // to generate random numbers.> import> java.util.concurrent.ThreadLocalRandom;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generate random integers in range 0 to 999> >int> rand_int1 = ThreadLocalRandom.current().nextInt();> >int> rand_int2 = ThreadLocalRandom.current().nextInt();> > >// Print random integers> >System.out.println(>'Random Integers: '> + rand_int1);> >System.out.println(>'Random Integers: '> + rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = ThreadLocalRandom.current().nextDouble();> >double> rand_dub2 = ThreadLocalRandom.current().nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '> + rand_dub1);> >System.out.println(>'Random Doubles: '> + rand_dub2);> > >// Generate random booleans> >boolean> rand_bool1 = ThreadLocalRandom.current().nextBoolean();> >boolean> rand_bool2 = ThreadLocalRandom.current().nextBoolean();> > >// Print random Booleans> >System.out.println(>'Random Booleans: '> + rand_bool1);> >System.out.println(>'Random Booleans: '> + rand_bool2);> >}> }> |
Linux eine Datei bearbeiten
>
>Ausgabe
Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>
Um Zufallszahlen mit bestimmten Bereichen zu generieren. Es gibt zwei verschiedene Möglichkeiten, dies zu tun:
- Verwendung einer Zufallsklasse
- Verwendung der Math.random()-Methode
1. Verwenden einer Zufallsklasse
Hier ist eine Formel zum Generieren von Zufallszahlen mit einem bestimmten Bereich, wobei Min und Max unsere untere und obere Zahlengrenze darstellen.
Zufälliger Rand = new Random();
int randomNum = rand.nextInt(max – min + 1) + min;
Java
import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Random rand =>new> Random();> >int> max=>100>,min=>50>;> >System.out.println(>'Generated numbers are within '>+min+>' to '>+max);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >}> }> |
>
>Ausgabe
Generated numbers are within 50 to 100 58 87 55>
Zeitkomplexität: Es hat eine Zeitkomplexität von O(1)
Hilfsraum: O(1) benötigt konstanten Raum.
2. Verwendung der Math.random()-Methode
Hier ist die Formel zum Generieren einer Zufallszahl mit einem bestimmten Bereich, wobei Min und Max unsere untere und obere Grenze der Zahl sind:
int randomNum = min + (int)(Math.random() * ((max – min) + 1));
Java
/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> max=>100>,min=>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>)));> >}> }> |
>
>Ausgabe
String-Tokenizer Java
Generated numbers are within 50 to 100 53 99 77>
Zeitkomplexität: Es hat eine Zeitkomplexität von O(1)
Hilfsraum: O(1) benötigt konstanten Raum.