logo

Generering af tilfældige tal i Java

Java giver tre måder at generere tilfældige tal ved hjælp af nogle indbyggede metoder og klasser som angivet nedenfor:

    java.util.Random klasse Math.random metode: Kan generere tilfældige tal af dobbelt type. ThreadLocalRandom klasse

1) java.util.Random

  • For at bruge denne klasse til at generere tilfældige tal, skal vi først oprette en instans af denne klasse og derefter påberåbe metoder såsom nextInt(), nextDouble(), nextLong() osv. ved at bruge den instans.
  • Vi kan generere tilfældige tal af typer heltal, float, double, long, booleans ved hjælp af denne klasse.
  • Vi kan videregive argumenter til metoderne til at placere en øvre grænse for rækkevidden af ​​de tal, der skal genereres. For eksempel vil nextInt(6) generere tal i intervallet 0 til 5, begge inklusive.

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);> >}> }>

c struktur i struktur

>

>

Produktion

Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>

2) Math.random()

Klassen Math indeholder forskellige metoder til at udføre forskellige numeriske operationer såsom beregning af eksponentiering, logaritmer osv. En af disse metoder er random(), 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. Nedenstående program forklarer, hvordan man bruger denne metode:

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 klasse

Denne klasse er introduceret i java 1.7 for at generere tilfældige tal af typen heltal, doubler, booleans osv. Nedenstående program forklarer, hvordan man bruger denne klasse til at generere tilfældige tal:

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);> >}> }>

hvad er en speciel karakter
>

>

Produktion

Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>

At generere tilfældige tal med specifikke intervaller. Der er 2 forskellige måder at gøre det på:

  • Brug af tilfældig klasse
  • Brug af Math.random() metoden

1. Brug af tilfældig klasse

Her er formel til at generere et tilfældigt tal med et specifikt interval, hvor min og max er vores nedre og højere grænse for 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>

Tidskompleksitet: Den har en tidskompleksitet på O(1)
Auxiliary Space: O(1) kræver konstant plads.

2. Brug af Math.random()-metoden

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));

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 bønne
Generated numbers are within 50 to 100 53 99 77>

Tidskompleksitet: Den har en tidskompleksitet på O(1)
Auxiliary Space: O(1) kræver konstant plads.