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

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

Привіт по той бік екрану.

Будь-який з нас рано чи пізно зустрічається з необхідністю генерувати випадкове число в заданому нами діапазоні будь то речовий або ціле число.

Для чого? Насправді це не важливо, це може бути функція для розрахунку шансу для запуску якого-небудь події, отримання випадкового множника або будь-якого інша.

Отже, для чого це потрібно розібралися, а саме для чого завгодно :)

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

Що ж ми маємо?
Виклик методу Math.random () повертає псевдовипадкове дійсне число (double) з діапазону [0; 1). тобто, від 0 до 1 виключаючи 1, а значить максимальне число в діапазоні це 0.99999999999.

Добре, ми отримали псевдовипадкове число, але якщо нам потрібен свій діапазон?
Наприклад, нам потрібно псевдовипадкове число з діапазону [0; 100)?

Вийшло не погано, але max (в нашому випадку) ми все одно не отримаємо.
Для того щоб отримати випадкове число в діапазоні [0; 100] нам необхідно додати до нашого max 1, а потім перетворити в ціле число типу int або long (залежить від діапазонів які Ви будете використовувати).


Примітка: Як бачите змінна max була інкрементіровать префиксной формою. (Якщо Ви не знаєте що це раджу почитати мою статтю)

Відмінно, ми отримали те що хотіли, але якщо нам потрібен діапазон немає від 0, а наприклад [10; 75]


Розбір коду з методу rnd:
Мінімальна кількість діапазону = 10;
Максимальне число діапазону = 75;
max - = min; // Віднімаємо від максимального значення мінімальне для отримання множника псевдослучайного дійсного числа.
Максимальне число після розрахунку дорівнює 65

Псевдовипадкове дійсне число (наприклад) одно 0.18283417347179454 (Було отримано при виклику Math .random ())
Максимальне число перед множенням було інкрементіровать префиксной формою.
Максимальне число тепер 66

Множимо 0.18283417347179454 на 66
Результат множення дорівнює 12.06705544913844
Перетворюємо результат множення максимального числа на псевдовипадкове дійсне число до типу цілого числа int
Додаємо мінімальне число до перетвореному результату який дорівнює 12
Повертаємо результат: 22

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

Сподіваюся для Вас це було корисно і пізнавально.

Успіхів в освоєнні Java;)

Схожі статті