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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |