logo

Generering av tilfeldige tall i Java

Tilfeldige tall er mye brukt i programmering for simulering av spillsikkerhet etc. Det er flere måter å generere tilfeldige tall ved å bruke innebygde metoder og klasser i Java. De mest brukte metodene er listet opp nedenfor:

  • java.util.Tilfeldig klasse
  • Math.random()-metoden (returnerer doble verdier)
  • ThreadLocalRandom-klassen (introdusert i Java 7)

La oss utforske hver av disse tilnærmingene en etter en i detalj

1. Bruke java.util.Random

Ved hjelp av denne klassen kan vi generere tilfeldige tall av forskjellige typer (int double long boolean etc.).



Nøkkelmetoder:

  • nextInt(): Denne metoden genererer et tilfeldig heltall (full rekkevidde inkludert negative)
  • nextInt(int bundet): Denne metoden genererer et tilfeldig heltall mellom 0 (inklusive) og bundet (eksklusivt)
  • nextDouble(): Denne metoden genererer en tilfeldig dobbel mellom 0,0 (inklusive) og 1,0 (eksklusivt)
  • nextBoolean(): Tilfeldig sant eller usant

Eksempel :

Java
// Generating random number using java.util.Random; import java.util.Random; public class Geeks{    public static void main(String[] args) {    // Creating the instance of Random class  Random r= new Random();  // Generate random integers in range 0 to 999  int r1 = r.nextInt(1000);  int r2 = r.nextInt(1000);  // Printing random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate random doubles  double rd1 = r.nextDouble();  double rd2 = r.nextDouble();  // Printing random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  } } 

Produksjon
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Generering av tall i et spesifikt område

Formelen for å generere et tilfeldig tall med et spesifikt område er oppført nedenfor:

Random rand = new Random();

int randomNum = rand.nextInt(maks - min + 1) + min;

Note: min og maks er vår nedre og høyere grense for antall.

Eksempel:

Java
// Generating random number in a specific range  import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  Random r = new Random();  int max=100min=50;  System.out.println('Generated numbers are within '+ min +' to '+ max);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  } } 

Produksjon
Generated numbers are within 50 to 100 55 51 51 


2. Bruke Math.random()

De Matematikktime inneholder ulike metoder for å utføre ulike numeriske operasjoner som å beregne eksponentiasjonslogaritmer etc. En av disse metodene er tilfeldig() 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.

Eksempel:

Java
// Java program to demonstrate working of  // Math.random() to generate random numbers import java.util.*;   public class Geeks {  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.38601320746656065 Random doubles: 0.9209882942481417 

Generering av tall i et spesifikt område

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

Eksempel:

Java
// Demonstrating how to generate random  // number within a specific range import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  int max=100min=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
Generated numbers are within 50 to 100 82 68 77 


3. Bruke ThreadLocalRandom

Dette er den anbefalte måten i miljøer med flere tråder, da det reduserer uenighet.

Nøkkelmetoder:

  • gjeldende().nextInt(): Tilfeldig heltall (full rekkevidde)
  • gjeldende().nextInt(min maks + 1): Tilfeldig heltall i området (jeg har lagt til dette avgrensede eksemplet)
  • gjeldende().nextDouble(): Tilfeldig dobbel (0,0 til 1,0)
  • gjeldende().nextBoolean(): Tilfeldig sant eller usant

Eksempel:

Java
// Demonstrates how to generate random integers  // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks {  public static void main(String[] args) {  // Generate random integers in range 0 to 999  // Random number between 0 and 999  int r1 = ThreadLocalRandom.current().nextInt(1000);    // Random number between 0 and 999  int r2 = ThreadLocalRandom.current().nextInt(1000);   // Print random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate Random doubles between 0.0 (inclusive)   // and 1.0 (exclusive)  double rd1 = ThreadLocalRandom.current().nextDouble();  double rd2 = ThreadLocalRandom.current().nextDouble();  // Print random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  // Generate random booleans  boolean rb1 = ThreadLocalRandom.current().nextBoolean();  boolean rb2 = ThreadLocalRandom.current().nextBoolean();  // Print random Booleans  System.out.println('Random Booleans: ' + rb1);  System.out.println('Random Booleans: ' + rb2);  } } 

Produksjon
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false