logo

Генериране на произволни числа в Java

Случайни числа се използват широко в програмирането за симулации, сигурност на игрите и т.н. Има множество начини за генериране на произволни числа с помощта на вградени методи и класове в Java. Най-често използваните подходи са изброени по-долу:

  • java.util.Случаен клас
  • Метод Math.random() (връща двойни стойности)
  • Клас ThreadLocalRandom (въведен в Java 7)

Нека разгледаме всеки от тези подходи един по един в детайли

1. Използване на java.util.Random

С помощта на този клас можем да генерираме произволни числа от различни типове (int double long boolean и др.).



Ключови методи:

  • nextInt(): Този метод генерира произволно цяло число (пълен диапазон, включително отрицателни)
  • nextInt (обвързан с int): Този метод генерира произволно цяло число между 0 (включително) и ограничено (изключително)
  • nextDouble(): Този метод генерира произволно двойно между 0,0 (включително) и 1,0 (изключително)
  • nextBoolean(): Случайно вярно или невярно

Пример :

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

Изход
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Генериране на числа в определен диапазон

Формулата за генериране на произволно число с определен диапазон е посочена по-долу:

Случаен ранд = нов Случаен();

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

Забележка: min и max са нашата долна и горна граница на брой.

Пример:

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

Изход
Generated numbers are within 50 to 100 55 51 51 


2. Използване на Math.random()

The Час по математика съдържа различни методи за извършване на различни числени операции като изчисляване на логаритми за степенуване и т.н. Един от тези методи е случаен() този метод връща двойна стойност с положителен знак, по-голям или равен на 0,0 и по-малък от 1,0. Върнатите стойности се избират псевдослучайно. Този метод може да генерира само произволни числа от тип Doubles.

Пример:

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

Изход
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Генериране на числа в определен диапазон

Ето формулата за генериране на произволно число със специфичен диапазон, където min и max са нашата долна и горна граница на числото:

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

Пример:

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

Изход
Generated numbers are within 50 to 100 82 68 77 


3. Използване на ThreadLocalRandom

Това е препоръчителният начин в многонишкови среди, тъй като намалява конкуренцията.

Ключови методи:

  • current().nextInt(): Случайно цяло число (пълен диапазон)
  • current().nextInt(min max + 1): Случайно цяло число в диапазон (добавих този ограничен пример)
  • current().nextDouble(): Случайно двойно (0,0 до 1,0)
  • current().nextBoolean(): Случайно вярно или невярно

Пример:

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

Изход
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false