Java tillhandahåller tre sätt att generera slumptal med hjälp av några inbyggda metoder och klasser som listas nedan:
- java.util.Random klass Math.random metod : Kan generera slumptal av dubbel typ. ThreadLocalRandom-klass
1) java.util.Random
- För att använda den här klassen för att generera slumpmässiga tal måste vi först skapa en instans av den här klassen och sedan anropa metoder som nextInt(), nextDouble(), nextLong() etc med den instansen.
- Vi kan generera slumpmässiga antal typer heltal, float, double, long, booleans med hjälp av denna klass.
- Vi kan skicka argument till metoderna för att placera en övre gräns för intervallet för de siffror som ska genereras. Till exempel kommer nextInt(6) att generera tal i intervallet 0 till 5, båda.
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);> >}> }> |
fmovies Indien
>
>Produktion
Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>
2) Math.random()
Klassen Math innehåller olika metoder för att utföra olika numeriska operationer såsom beräkning av exponentiering, logaritmer etc. En av dessa metoder är random(), denna metod returnerar ett dubbelt värde med ett positivt tecken, större än eller lika med 0,0 och mindre än 1,0 . De returnerade värdena väljs pseudoslumpmässigt. Denna metod kan bara generera slumpmässiga antal av typen Dubblar. Nedan program förklarar hur man använder denna metod:
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());> >}> }> |
>
>Produktion
Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>
3) java.util.concurrent.ThreadLocalRandom klass
Denna klass introduceras i java 1.7 för att generera slumptal av typen heltal, dubblar, booleans etc. Nedan program förklarar hur man använder denna klass för att generera slumptal:
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);> >}> }> |
uppföljande datatyper
>
>Produktion
Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>
För att generera slumptal med specifika intervall. Det finns 2 olika sätt att göra det:
- Använder slumpmässig klass
- Använder metoden Math.random().
1. Använda Random Class
Här är formel för att generera ett slumptal med ett specifikt intervall, där min och max är vår nedre och högre gräns för antal.
Random 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);> >}> }> |
>
>Produktion
Generated numbers are within 50 to 100 58 87 55>
Tidskomplexitet: Den har en tidskomplexitet på O(1)
Auxiliary Space: O(1) kräver konstant utrymme.
2. Använda Math.random()-metoden
Här är formeln för att generera ett slumptal med specifikt intervall, där min och max är vår nedre och högre gräns för antal:
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>)));> >}> }> |
>
>Produktion
java dynamisk array
Generated numbers are within 50 to 100 53 99 77>
Tidskomplexitet: Den har en tidskomplexitet på O(1)
Auxiliary Space: O(1) kräver konstant utrymme.