logo

Як згенерувати випадкове число в Java

в Java програмування, ми часто вимагали генерувати випадкові числа поки ми розробляємо програми. Багато програм мають функцію генерувати числа випадковим чином , наприклад, для перевірки користувача, який використовують багато програм OTP . Найкращим прикладом випадкових чисел є кубики. Тому що коли ми кидаємо його, ми отримуємо випадкове число від 1 до 6.

У цьому розділі ми дізнаємося, що таке a випадкове число і як генерувати випадкові числа в Java .

Випадкове число

Випадкові числа — це числа, які використовують великий набір чисел і вибирають число за допомогою математичного алгоритму. Він задовольняє наступним двом умовам:

  • Згенеровані значення рівномірно розподілені на певному інтервалі.
  • Неможливо вгадати майбутню вартість на основі поточних і минулих значень.

Генерація випадкового числа в Java

У Java існує три способи генерації випадкових чисел за допомогою методу та класів.

  • Використовуючи випадковий() метод
  • Використовуючи випадковий Клас
  • Використовуючи ThreadLocalRandom Клас
  • Використовуючи ints() Метод (у Java 8)

Використання методу Math.random().

Ява математика клас має багато методів для різних математичних операцій. Одним із них є випадковий() метод. Це статичний метод класу Math. Ми можемо викликати його безпосередньо. Він тільки породжує подвійний введіть випадкове число більше або дорівнює 0,0 і менше 1,0 . Перш ніж використовувати метод random(), ми повинні імпортуватиjava.lang.Mathклас.

Синтаксис:

 public static double random() 

Він не приймає жодних параметрів. Він повертає псевдовипадкове подвійне значення, яке більше або дорівнює 0,0 і менше 1,0.

Давайте створимо програму, яка генерує випадкові числа за допомогою методу random().

RandomNumberExample1.java

що таке вулик
 import java.lang.Math; public class RandomNumberExample1 { public static void main(String args[]) { // Generating random numbers System.out.println('1st Random Number: ' + Math.random()); System.out.println('2nd Random Number: ' + Math.random()); System.out.println('3rd Random Number: ' + Math.random()); System.out.println('4th Random Number: ' + Math.random()); } } 

Вихід:

 1st Random Number: 0.17434160924512265 2nd Random Number: 0.4297410090709448 3rd Random Number: 0.4828656381344487 4th Random Number: 0.13267917059488898 

Пам'ятайте: Кожного разу, коли ми виконуємо програму, ми отримуємо інший результат. Ваш результат може відрізнятися від результату, показаного вище.

Ми також можемо використати наведену нижче формулу, якщо хочемо згенерувати випадкове число в заданому діапазоні.

 Math.random() * (max - min + 1) + min 

У наведеній вище формулі мінімальне значення включає, а максимальне значення – виключає.

Давайте створимо програму, яка генерує випадкові числа від 200 до 400.

RandomNumberExample2.java

 public class RandomNumberExample2 { public static void main( String args[] ) { int min = 200; int max = 400; //Generate random double value from 200 to 400 System.out.println('Random value of type double between '+min+' to '+max+ ':'); double a = Math.random()*(max-min+1)+min; System.out.println(a); //Generate random int value from 200 to 400 System.out.println('Random value of type int between '+min+' to '+max+ ':'); int b = (int)(Math.random()*(max-min+1)+min); System.out.println(b); } } 

Вихід 1:

 Random value of type double between 200 to 400: 233.88329802655377 Random value of type int between 200 to 400: 329 

Результат 2:

 Random value of type double between 200 to 400: 254.8419979875385 Random value of type int between 200 to 400: 284 

Використання випадкового класу

Інший спосіб генерації випадкового числа - це використання Java випадковий клас зjava.utilпакет. Він генерує потік псевдовипадкових чисел. Ми можемо генерувати випадкове число будь-якого типу даних, як-от ціле число, число з плаваючою точкою, подвійне, логічне, довге. Якщо ви збираєтеся використовувати цей клас для генерації випадкових чисел, виконайте наведені нижче кроки:

  • Спочатку імпортуйте класjava.lang.Random.
  • Створити об'єкт класу Random.
  • Викликайте будь-який із наведених нижче методів:
  • nextInt (прив'язка int) nextInt() nextFloat() nextDouble() nextLong() nextBoolean()

Усі наведені вище методи повертають наступне псевдовипадкове однорідно розподілене значення (відповідний метод) із цієї послідовності генератора випадкових чисел. The nextDouble() і nextFloat() метод генерує випадкове значення від 0,0 до 1,0.

The nextInt (прив'язка int) метод приймає межу параметра (верхню), яка має бути додатною. Він генерує випадкове число в діапазоні від 0 до межі-1.

необхідна збірка ubuntu

Давайте створимо програму, яка генерує випадкові числа за допомогою класу Random.

RandomNumberExample3.java

 import java.util.Random; public class RandomNumberExample3 { public static void main(String args[]) { // creating an object of Random class Random random = new Random(); // Generates random integers 0 to 49 int x = random.nextInt(50); // Generates random integers 0 to 999 int y = random.nextInt(1000); // Prints random integer values System.out.println('Randomly Generated Integers Values'); System.out.println(x); System.out.println(y); // Generates Random doubles values double a = random.nextDouble(); double b = random.nextDouble(); // Prints random double values System.out.println('Randomly Generated Double Values'); System.out.println(a); System.out.println(b); // Generates Random float values float f=random.nextFloat(); float i=random.nextFloat(); // Prints random float values System.out.println('Randomly Generated Float Values'); System.out.println(f); System.out.println(i); // Generates Random Long values long p = random.nextLong(); long q = random.nextLong(); // Prints random long values System.out.println('Randomly Generated Long Values'); System.out.println(p); System.out.println(q); // Generates Random boolean values boolean m=random.nextBoolean(); boolean n=random.nextBoolean(); // Prints random boolean values System.out.println('Randomly Generated Boolean Values'); System.out.println(m); System.out.println(n); } } 

Вихід:

 Randomly Generated Integers Values 23 767 Randomly Generated Double Values 0.37823814494212016 0.998058172671956 Randomly Generated Float Values 0.87804186 0.93880254 Randomly Generated Long Values -4974823544291679198 3650240138416076693 Randomly Generated Boolean Values false true 

Використання класу ThreadLocalRandom

The ThreadLocalRandom клас визначено вjava.util.concurrentпакет. Він ініціалізується за допомогою внутрішнього генерованого початкового числа, такого ж, як і генератор випадкових значень класу Math. Його не можна змінити. Ми можемо використовувати цей клас у такий спосіб:

 ThreadLocalRandom.current().nextX(...) 

Де X – Int, Long тощо.

Примітка. Неможливо випадково поділитися ThreadLocalRandom з кількома потоками.

Ми можемо генерувати випадкове число будь-якого типу даних, як-от ціле число, число з плаваючою точкою, подвійне, логічне, довге. Якщо ви збираєтеся використовувати цей клас для генерації випадкових чисел, виконайте наведені нижче кроки:

  • Спочатку імпортуйте клас за допомогоюjava.util.concurrent.ThreadLocalRandom.
  • Викличте відповідний метод, для якого ви хочете генерувати числа випадковим чином.
  • nextInt() nextDouble() nextLong() nextFloat() nextBoolean()

Усі наведені вище методи замінюють відповідний метод класу Random і повертають відповідне значення.

    nextInt (прив'язка int) nextDouble (прив'язка int) nextLong (прив'язка int)

Наведені вище методи аналізують параметр зв'язаний (верхній), що має бути позитивний . Він повертає відповідне випадково згенероване значення від 0 (включно) до вказаної межі (виключно). Це кидає IllegalArgumentExcetion якщо межа негативна.

    nextInt(int origin, int bound) nextDouble(int origin, int bound) nextLong(int origin, int bound)

Наведені вище методи розбирають два параметри походження і зв'язаний . Походження вказує на найменше значення повертається, а межа визначає верхня межа . Він повертає відповідне випадково згенероване значення між вказаним джерелом (включно) і межею (виключно). Крім того, кидки IllegalArgumentExcetion якщо початок координат більше або дорівнює межі.

Давайте створимо програму, яка генерує випадкові числа за допомогою Клас ThreadLocalRandom .

RandomNumberExample4.java

 import java.util.concurrent.ThreadLocalRandom; public class RandomNumberExample4 { public static void main(String args[]) { // Generate random integers between 0 to 999 int a = ThreadLocalRandom.current().nextInt(); int b = ThreadLocalRandom.current().nextInt(); // Print random integer values System.out.println('Randomly Generated Integer Values:'); System.out.println(a); System.out.println(b); // Generate Random double values double c = ThreadLocalRandom.current().nextDouble(); double d = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Randomly Generated Double Values:'); System.out.println(c); System.out.println(d); // Generate random boolean values boolean e = ThreadLocalRandom.current().nextBoolean(); boolean f = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Randomly Generated Boolean Values:'); System.out.println(e); System.out.println(f); } } 

Вихід 1:

 Randomly Generated Integer Values: 348534891 -1887936727 Randomly Generated Double Values: 0.15644440033119833 0.5242730752133399 Randomly Generated Boolean Values: true true 

Результат 2:

 Output 2: Randomly Generated Integer Values: 402755574 295398333 Randomly Generated Double Values: 0.4856461791062565 0.5148677091077654 Randomly Generated Boolean Values: false true 

Подібним чином ми можемо використовувати інші методи ThreadLocalRandomclass .

Генерація випадкових чисел у Java 8

У Java 8 додано новий метод ints(). Випадковий клас . Ми повинні імпортуватиjava.util.Randomперед використанням методу.

ints():

Псевдовипадкові значення int генеруються так само, як виклик методу nextInt(). Він повертає необмежений потік псевдовипадкових значень int.

numpy означає

ints(long streamSize):

Метод аналізує параметр streamSize типу long. Він визначає кількість значень, які мають бути згенеровані. Псевдовипадкові значення int генеруються так само, як виклик методу nextInt(). Він також повертає потік випадково згенерованих значень int. Це кидає IllegalArgumentException якщо розмір потоку менше нуля.

ints(long streamSize, int randomNumberOrigin, int randomNumberBound):

Параметри:

    streamSize:Кількість значень для створення.randomNumberOrigin:Походження кожного випадкового значенняrandomNumberBound:Межа кожного випадкового значення

Він повертає потік псевдовипадкових значень int із вказаним джерелом і межею. Це кидає IllegalArgumentException якщо:

  • stramSize<0< li>
  • походження > = пов'язано
 ints(int randomNumberOrigin, int randomNumberBound): 

Параметри:

randomNumberOrigin:Походження кожного випадкового значенняrandomNumberBound:Межа кожного випадкового значення

Він повертає необмежений потік псевдовипадкових значень int із вказаним джерелом і межею. Це кидає IllegalArgumentException якщо початок координат більше або дорівнює межі.

Подібним чином ми також можемо створити потік типів long і double за допомогою довго() і подвійний() метод відповідно.

Давайте створимо програму, яка генерує потік цілих чисел за допомогою ints() метод класу Random.

RandomNumberExample5.java

 import java.util.Random; public class RandomNumberExample5 { public static void main(String[] args) { randomInts(5); randomInts(9, 50, 90); //getStreamOfRandomInts(30, 50); } //method that generates a stream of integers having size 5 public static void randomInts(int num) { Random random = new Random(); random.ints(num).forEach(System.out::println); } //method that generates a stream of 9 integers between 50 to 90 public static void randomInts(int num, int origin, int bound) { Random random1 = new Random(); random1.ints(num, origin, bound).forEach(System.out::println); } } 

Вихід 1:

 727900357 -1073118456 306279822 370327182 1366265119 65 75 75 88 76 75 56 86 85 

Результат 2:

 -1338107947 -1698771421 594232770 -1224937976 -1625069815 56 69 67 87 64 52 72 75 76