logo

Generer tilfeldige tall i Java

Java gir tre måter å generere tilfeldige tall ved å bruke noen innebygde metoder og klasser som er oppført nedenfor:

    java.util.Random class Math.random metode : Kan generere tilfeldige tall av dobbel type. ThreadLocalRandom klasse

1) java.util.Random

  • For å bruke denne klassen til å generere tilfeldige tall, må vi først opprette en forekomst av denne klassen og deretter påkalle metoder som nextInt(), nextDouble(), nextLong() osv. ved å bruke den forekomsten.
  • Vi kan generere tilfeldige tall av typene heltall, float, double, long, boolean ved å bruke denne klassen.
  • Vi kan sende argumenter til metodene for å plassere en øvre grense for rekkevidden av tallene som skal genereres. For eksempel vil nextInt(6) generere tall i området 0 til 5, begge inkludert.

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

Java eksempel programmer

>

>

Produksjon

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

2) Math.random()

Klassen Math inneholder ulike metoder for å utføre ulike numeriske operasjoner som, beregning av eksponentiering, logaritmer osv. En av disse metodene er random(), denne metoden returnerer en dobbel verdi med et positivt fortegn, større enn eller lik 0,0 og mindre enn 1,0 . De returnerte verdiene velges pseudotilfeldig. Denne metoden kan bare generere tilfeldige tall av typen Doubles. Programmet nedenfor forklarer hvordan du bruker denne metoden:

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

>

>

Produksjon

Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>

3) java.util.concurrent.ThreadLocalRandom-klassen

Denne klassen er introdusert i java 1.7 for å generere tilfeldige tall av typen heltall, dobler, booleaner osv. Programmet nedenfor forklarer hvordan du bruker denne klassen til å generere tilfeldige tall:

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

by i uas
>

>

Produksjon

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

For å generere tilfeldige tall med spesifikke områder. Det er 2 forskjellige måter å gjøre det på:

  • Bruker tilfeldig klasse
  • Bruker Math.random() metoden

1. Bruke tilfeldig klasse

Her er formel for å generere tilfeldige tall med et spesifikt område, hvor min og maks er vår nedre og høyere grense for antall.

Random rand = new Random();
int randomNum = rand.nextInt(maks – 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);> >}> }>

>

>

Produksjon

Generated numbers are within 50 to 100 58 87 55>

Tidskompleksitet: Den har en tidskompleksitet på O(1)
Auxiliary Space: O(1) krever konstant plass.

2. Bruke Math.random()-metoden

Her er formelen for å generere et tilfeldig tall med spesifikt område, der min og maks er vår nedre og høyere grense for antall:

int randomNum = min + (int)(Math.random() * ((maks – 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>)));> >}> }>

>

>

Produksjon

javascript strengtrim
Generated numbers are within 50 to 100 53 99 77>

Tidskompleksitet: Den har en tidskompleksitet på O(1)
Auxiliary Space: O(1) krever konstant plass.