Math.random()
Функція Math.random()
повертає псевдо-випадкове число із рухомою комою з проміжку 0–1 (включно із 0, але не включаючи 1) із приблизно рівномірним розподілом значень на ньому (в подальшому його можна масштабувати до потрібних розмірів). Вихідне зерно-параметр для алгоритму генерації випадкового числа обирається реалізацією; воно не може бути обраним чи перевизначеним користувачем.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Math.random()
не надає криптографічно стійких випадкових чисел. Не слід застосовувати їх будь-де у місцях, пов'язаних із інформаційною безпекою. Натомість використовуйте Web Crypto API, а точніше - метод window.crypto.getRandomValues()
.
Синтаксис
Math.random()
Результат
Псевдовипадкове число із рухомою комою між 0
(включно) та 1 (виключно).
Приклади
Зауважте, що числа у JavaScript являються стандартизованими згідно IEEE 754 числами із рухомою комою із поведінкою "округлення до найближчого парного". Тому проміжки, що охоплюються наступними фукнціями (за винятком власне Math.random()
) не зовсім точні. За умови дуже великих обраних меж (253 чи більших) можливо у дуже рідкісних випадках отримати значення верхньої межі, яке зазвичай виключається.
Отримання випадкового числа з-поміж 0 (включно) та 1 (виключно)
function getRandom() {
return Math.random();
}
Отримання випадкового числа з-поміж двох значень
Наступний приклад повертає випадкове число між двома вказаними значеннями. Результат не менший від (інколи дорівнює) min
, і менший за (але не дорівнює) max
.
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
Отримання випадкового цілого з-поміж двох значень
Наступний приклад повертає випадкове ціле число між двома заданими значеннями. Результат не менший від min
(або ж від наступного цілого, більшого за min
, якщо min
не являється цілим), і менший за (але не дорівнює) max
.
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //Включно з мінімальним та виключаючи максимальне значення
}
Застосування Math.round()
для отримання цілих може виглядати доволі привабливо, проте це призведе до спотворення рівномірного розподілу ймовірності результатів, що може бути неприйнятним для ваших потреб.
Отримання випадкового цілого з-поміж двох значень, включно
В той час, коли фукнція getRandomInt()
включає до спектру результатів мінімум, вона виключає звідти максимум. Що, якщо вам знадобиться включити до можливих результатів як мінімум, так і максимум? Наступна фукнція getRandomIntInclusive()
дозволяє цього досягти:
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //Включаючи мінімум та максимум
}
Специфікації
Специфікація | Статус документу | Примітка |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Первинне визначення. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (All platforms). |
ECMAScript 5.1 (ECMA-262) The definition of 'Math.random' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Math.random' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'Math.random' in that specification. |
Living Standard |
Сумісність із браузерами
BCD tables only load in the browser
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.