Випадкові числа широко використовуються в програмуванні для симуляції безпеки ігор тощо. Є кілька способів генерувати випадкові числа за допомогою вбудованих методів і класів у 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
Генерування чисел у певному діапазоні
Нижче наведено формулу для створення випадкового числа з певним діапазоном:
Random rand = новий Random();
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): Випадкове ціле число в діапазоні (я додав цей обмежений приклад)
- поточний().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