logo

Generovanie náhodných čísel v Jave

Náhodné čísla sú široko používané v programovaní na simulácie hernej bezpečnosti atď. Existuje viacero spôsobov, ako generovať náhodné čísla pomocou vstavaných metód a tried v jazyku Java. Najčastejšie používané prístupy sú uvedené nižšie:

Fibonacciho séria v c
  • java.util.Náhodná trieda
  • Metóda Math.random() (vracia dvojité hodnoty)
  • Trieda ThreadLocalRandom (zavedená v jazyku Java 7)

Preskúmajme každý z týchto prístupov jeden po druhom podrobne

1. Pomocou java.util.Random

Pomocou tejto triedy môžeme generovať náhodné čísla rôznych typov (int double long boolean atď.).



Kľúčové metódy:

  • nextInt(): Táto metóda generuje náhodné celé číslo (celý rozsah vrátane záporných čísel)
  • nextInt(int bound): Táto metóda generuje náhodné celé číslo medzi 0 (vrátane) a viazané (exkluzívne)
  • nextDouble(): Táto metóda generuje náhodný dvojnásobok medzi 0,0 (vrátane) a 1,0 (výhradne)
  • nextBoolean(): Náhodne pravda alebo nepravda

Prí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 

Generovanie čísel v špecifickom rozsahu

Vzorec na generovanie náhodného čísla so špecifickým rozsahom je uvedený nižšie:

Random rand = new Random();

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

Poznámka: min a max sú naša spodná a horná hranica počtu.

Prí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žitie Math.random()

The Hodina matematiky obsahuje rôzne metódy na vykonávanie rôznych numerických operácií, ako je výpočet exponenciálnych logaritmov atď. Jednou z týchto metód je náhodný() táto metóda vráti dvojitú hodnotu s kladným znamienkom väčším alebo rovným 0,0 a menším ako 1,0. Vrátené hodnoty sú vybrané pseudonáhodne. Táto metóda môže generovať iba náhodné čísla typu Doubles.

Prí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 

Generovanie čísel v špecifickom rozsahu

Tu je vzorec na vygenerovanie náhodného čísla so špecifickým rozsahom, kde min a max sú náš dolný a horný limit počtu:

xor cpp

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

Prí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žitie ThreadLocalRandom

Toto je odporúčaný spôsob vo viacvláknových prostrediach, pretože znižuje spory.

Kľúčové metódy:

  • current().nextInt(): Náhodné celé číslo (celý rozsah)
  • current().nextInt(min max + 1): Náhodné celé číslo v rozsahu (pridal som tento obmedzený príklad)
  • current().nextDouble(): Náhodný dvojnásobok (0,0 až 1,0)
  • current().nextBoolean(): Náhodne pravda alebo nepravda

Prí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