Java biedt drie manieren om willekeurige getallen te genereren met behulp van enkele ingebouwde methoden en klassen, zoals hieronder vermeld:
- java.util.Random klasse Math.random methode: Kan willekeurige getallen van dubbel type genereren. ThreadLocalRandom-klasse
1) java.util.Random
- Om deze klasse te gebruiken om willekeurige getallen te genereren, moeten we eerst een instantie van deze klasse maken en vervolgens methoden zoals nextInt(), nextDouble(), nextLong() enz. aanroepen met behulp van die instantie.
- Met deze klasse kunnen we willekeurige getallen van de typen gehele getallen, float, double, long en booleans genereren.
- We kunnen argumenten doorgeven aan de methoden voor het plaatsen van een bovengrens voor het bereik van de te genereren getallen. NextInt(6) genereert bijvoorbeeld getallen in het bereik van 0 tot en met 5, beide inclusief.
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);> >}> }> |
fabrieksontwerppatroon
>
>Uitvoer
Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>
2) Math.random()
De klasse Math bevat verschillende methoden voor het uitvoeren van verschillende numerieke bewerkingen, zoals het berekenen van machtsverheffen, logaritmen enz. Een van deze methoden is random(), deze methode retourneert een dubbele waarde met een positief teken, groter dan of gelijk aan 0,0 en kleiner dan 1,0 . De geretourneerde waarden worden pseudo-willekeurig gekozen. Deze methode kan alleen willekeurige getallen van het type Doubles genereren. Onderstaand programma legt uit hoe u deze methode kunt gebruiken:
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());> >}> }> |
>
>Uitvoer
Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>
3) klasse java.util.concurrent.ThreadLocalRandom
Deze klasse is geïntroduceerd in Java 1.7 om willekeurige getallen van het type gehele getallen, doubles, booleans enz. te genereren. Het onderstaande programma legt uit hoe u deze klasse kunt gebruiken om willekeurige getallen te genereren:
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);> >}> }> |
wat is macos
>
>Uitvoer
Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>
Om willekeurige getallen met specifieke bereiken te genereren. Er zijn 2 verschillende manieren om dit te doen:
- Willekeurige klasse gebruiken
- Met behulp van de Math.random()-methode
1. Willekeurige klasse gebruiken
Hier is een formule om willekeurige getallen te genereren met een specifiek bereik, waarbij min en max onze onder- en bovenlimiet van het aantal zijn.
Willekeurige willekeurige = nieuwe willekeurige();
int willekeurigGetal = 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);> >}> }> |
>
>Uitvoer
Generated numbers are within 50 to 100 58 87 55>
Tijdcomplexiteit: het heeft een tijdcomplexiteit van O(1)
Hulpruimte: O(1) vereist constante ruimte.
2. Met behulp van de Math.random()-methode
Hier is de formule om een willekeurig getal met een specifiek bereik te genereren, waarbij min en max onze onder- en bovengrens voor het aantal zijn:
int willekeurigGetal = 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>)));> >}> }> |
>
>Uitvoer
testen en soorten testen
Generated numbers are within 50 to 100 53 99 77>
Tijdcomplexiteit: het heeft een tijdcomplexiteit van O(1)
Hulpruimte: O(1) vereist constante ruimte.