--- title: Math.random() slug: Web/JavaScript/Reference/Global_Objects/Math/random tags: - JavaScript - Math - Довідка - метод translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---
Функція Math.random()
повертає псевдо-випадкове число із рухомою комою з проміжку 0–1 (включно із 0, але не включаючи 1) із приблизно рівномірним розподілом значень на ньому (в подальшому його можна масштабувати до потрібних розмірів). Вихідне зерно-параметр для алгоритму генерації випадкового числа обирається реалізацією; воно не може бути обраним чи перевизначеним користувачем.
Math.random()
не надає криптографічно стійких випадкових чисел. Не слід застосовувати їх будь-де у місцях, пов'язаних із інформаційною безпекою. Натомість використовуйте Web Crypto API, а точніше - метод {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.
Math.random()
Псевдовипадкове число із рухомою комою між 0
(включно) та 1 (виключно).
Зауважте, що числа у JavaScript являються стандартизованими згідно IEEE 754 числами із рухомою комою із поведінкою "округлення до найближчого парного". Тому проміжки, що охоплюються наступними фукнціями (за винятком власне Math.random()
) не зовсім точні. За умови дуже великих обраних меж (253 чи більших) можливо у дуже рідкісних випадках отримати значення верхньої межі, яке зазвичай виключається.
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; //Включаючи мінімум та максимум }
Специфікація | Статус документу | Примітка |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Первинне визначення. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (All platforms). |
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-math.random', 'Math.random')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}} | {{Spec2('ESDraft')}} |
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.
{{Compat("javascript.builtins.Math.random")}}