logo

Generování náhodných čísel v Javě

Náhodná čísla jsou široce používány v programování pro simulace zabezpečení her atd. Existuje několik způsobů, jak generovat náhodná čísla pomocí vestavěných metod a tříd v Javě. Nejčastěji používané přístupy jsou uvedeny níže:

  • java.util.Náhodná třída
  • Metoda Math.random() (vrací dvojité hodnoty)
  • Třída ThreadLocalRandom (zavedená v Javě 7)

Pojďme prozkoumat každý z těchto přístupů jeden po druhém podrobně

1. Pomocí java.util.Random

Pomocí této třídy můžeme generovat náhodná čísla různých typů (int double long boolean atd.).



Klíčové metody:

  • nextInt(): Tato metoda generuje náhodné celé číslo (plný rozsah včetně záporných čísel)
  • nextInt(int bound): Tato metoda generuje náhodné celé číslo mezi 0 (včetně) a vázanou (exkluzivní)
  • nextDouble(): Tato metoda generuje náhodný double mezi 0,0 (včetně) a 1,0 (exkluzivní)
  • nextBoolean(): Náhodně pravda nebo nepravda

Příklad :

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

Výstup
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Generování čísel v určitém rozsahu

Vzorec pro vygenerování náhodného čísla s konkrétním rozsahem je uveden níže:

Random rand = new Random();

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

Poznámka: min a max jsou naše spodní a horní hranice počtu.

Příklad:

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

Výstup
Generated numbers are within 50 to 100 55 51 51 


2. Použití Math.random()

The Hodina matematiky obsahuje různé metody pro provádění různých numerických operací, jako je výpočet umocňovacích logaritmů atd. Jednou z těchto metod je náhodný() tato metoda vrací dvojitou hodnotu s kladným znaménkem větším nebo rovným 0,0 a menším než 1,0. Vrácené hodnoty jsou vybrány pseudonáhodně. Tato metoda může generovat pouze náhodná čísla typu Doubles.

myliverriclet

Příklad:

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

Výstup
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Generování čísel v určitém rozsahu

Zde je vzorec pro generování náhodného čísla se specifickým rozsahem, kde min a max jsou naše spodní a vyšší limity počtu:

int randomNum = min + (int)(Math.random() * ((max - min) + 1));

Příklad:

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

Výstup
Generated numbers are within 50 to 100 82 68 77 


3. Použití ThreadLocalRandom

Toto je doporučený způsob v prostředí s více vlákny, protože snižuje konflikty.

Klíčové metody:

  • current().nextInt(): Náhodné celé číslo (celý rozsah)
  • current().nextInt(min max + 1): Náhodné celé číslo v rozsahu (přidal jsem tento omezený příklad)
  • current().nextDouble(): Náhodný dvojnásobek (0,0 až 1,0)
  • current().nextBoolean(): Náhodně pravda nebo nepravda

Příklad:

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

Výstup
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false