Генерація випадкових чисел в java - vertex academy

Генерація випадкових чисел в java - vertex academy

  • написана командою Vertex Academy. Сподіваємося, що вона Вам буде корисна. Приємного прочитання!
  • це одна зі статей з нашого "Самовчителя по Java"

Генерація випадкових чисел в Java - важлива і потрібна тема. Дійсно, вона Вам знадобиться незліченну кількість разів.

  • при заповненні масиву випадковими числами
  • при перетасування колоди карт
  • при виборі випадкового елемента з послідовності
  • і т.д.

Давайте ж розберемося з цією темою.

Існує кілька способів як згенерувати випадкове число. У цій статті ми розглянемо генерацію чисел за допомогою Math.random ()

У бібліотеці класів Java є пакет java.lang, у якого є клас Math, а у класу Math є метод random (). Див. Картинку нижче в допомогу.

Генерація випадкових чисел в java - vertex academy

Так ось, при кожному виклику Math.random () c допомогою спеціального алгоритму (за певною інструкцією) генерується випадкове число. Чи можна передбачити яке число буде згенеровано? Теоретично це можливо, але це дуже важко зробити. А оскільки все-таки існує невелика ймовірність передбачити, яке ж число буде згенеровано алгоритмом, такі числа прийнято називати не випадковими, а псевдовипадковими.

Ви повинні знати 3 моменти:

1. За замовчуванням Math.random () генерує випадкові речові числа з проміжку [0; 1), тобто від нуля включно до 1 виключно.

"До 1 виключно" - це означає, що Math.random () не може згенерувати число 1. Хіба що 0,999 - тобто будь-яке число менше 1.Спробуйте запустити на своєму комп'ютері ось цей код і самі побачите, що в консоль будуть виводитися речові числа від 0 до будь-якого числа, менше 1.

Крок №1: Діапазон [0; 1) множимо на 3. Відповідно,

Нижня межа: 0 * 3 = 0

Верхня межа: 1 * 3 = 3

Отримали діапазон [0; 3). Дужка після числа 3 кругла. Це означає, що 3 не входить в діапазон, тобто максимальне число, яке може бути створене в цьому діапазоні це 2,999. Одним словом - ми маємо справу з речовими (дробовими) числами.

Крок №2: Тому застосовуємо (int) перед Math.random () * 3. Дрібна частина відсікається і ми отримуємо діапазон [0; 2]

Якщо розглянути нашу формулу, то вона не дуже сильно зміниться.

У разі, якщо дійсне число, і верхній діапазон включає b - [a; b]:

(Math.random () * (b - a + 1) + a

Якщо ще і тільки цілі числа:

(Int) ((Math.random () * (b - a + 1) + a)

Якщо необхідно згенерувати число з інтервалу [3; 4]. Зверніть увагу, що після 4 дужка квадратна. Це означає, що нас цікавить, щоб діапазон включав в себе число 4. Як це зробити? Ось так:

Крок №1: Діапазон [0; 1) множимо на 2. Відповідно,

Нижня межа: 0 * 2 = 0

Верхня межа: 1 * 2 = 2

Отримали діапазон [0; 2). Дужка після числа 2 кругла. Це означає, що 2 не входить в діапазон, тобто максимальне число, яке може бути створене в цьому діапазоні це 1,999. А це значить, що ми маємо справу з речовим (дробовим) числом.

Крок №2: Тому застосовуємо (int) перед Math.random () * 2. Дрібна частина відсікається і ми отримуємо діапазон [0; 1]. Зверніть увагу - діапазон вже по число 1 включно.

Крок №3: Далі до діапазону [0; 1] додаємо 3. Відповідно,

Нижня межа: 0 + 3 = 3

Верхня межа: 1 + 3 = 4

Отримали новий діапазон [3; 4]

(Int) (Math.random () * (4 - 3 + 1) + 3) => (int) (Math.random () * 2 + 3)

Цілочисельне значення в інтервалі [-100; +100] (100 включно):

Схожі статті