Math.random()

Статичний метод Math.random() (випадкове) повертає псевдовипадкове число з рухомою комою в діапазоні від 0 до 1 (включно з 0, але не включно з 1) з приблизно рівномірним розподілом протягом цього діапазону, який потім можна масштабувати до бажаного розміру. Реалізація обирає початкове число (так званий «seed») для алгоритму генерації випадкового числа; це число не може бути обрано чи скинуто користувачем.

[!NOTE] Статичний метод Math.random() не надає криптографічно стійких випадкових чисел. Не варто їх використовувати для будь-чого, пов'язаного з безпекою. Натомість слід користуватись криптографічним веб-API, а точніше — методом Crypto.getRandomValues().

Спробуйте його в дії

Синтаксис

Math.random()

Параметри

Жодних.

Повернене значення

Псевдовипадкове число з рухомою комою в діапазоні від 0 (включно) до 1 (не включно).

Приклади

Зауважте, що оскільки числа в JavaScript — це реалізовані згідно зі стандартом IEEE 754 числа з рухомою комою, що округляються до найближчого парного, — заявлені діапазони результатів для функцій, наведених нижче (за винятком самої Math.random()), не цілком точні. Зазвичай заявлена верхня межа не є досяжною, але коли Math.random() повертає число, дуже близьке до 1, то така дрібна різниця може бути не суттєвою відносно заданого максимуму, унаслідок чого й досягається верхня межа.

Отримання випадкового числа між 0 (включно) та 1 (не включно)

function getRandom() {
  return Math.random();
}

Отримання випадкового числа з заданого діапазону

Цей приклад повертає випадкове число, значення якого лежить між двома вказаними числами. Повернене значення не нижче (проте може дорівнювати) min та менше (і не дорівнює) max.

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

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

Цей приклад повертає випадкове ціле число, значення якого лежить між двома вказаними числами. Повернене значення не нижче (проте може дорівнювати) min, та менше (і не дорівнює) max.

function getRandomInt(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // Включно з мінімальним та невключно з максимальним значенням
}

[!NOTE] в цьому випадку використання Math.round() може видаватись спокусливим, проте це призведе до нерівномірного розподілу результатів, що може бути неприйнятно для ваших потреб.

Отримання випадкового цілого числа з вказаного діапазону, включно з межами

Хоча результати функції getRandomInt() можуть включати нижню межу, вони не включають значення верхньої межі. Що, якщо нам потрібно повертати результати включно з мінімумом та максимумом? Функція getRandomIntInclusive() досягає цього.

function getRandomIntInclusive(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // Включно з мінімальним та максимальним значеннями
}

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
random
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 3
Opera Full support 3
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також