Math.random()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Math.random() возвращает псевдослучайное число с плавающей запятой, которое больше или равно 0 и меньше 1, с приблизительно равномерным распределением в этом диапазоне — которое затем можно масштабировать до желаемого диапазона. Реализация выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.
Примечание: Math.random() не предоставляет криптографически безопасные случайные числа. Не используйте их для чего-либо, связанного с безопасностью. Вместо этого используйте Web Crypto API, а точнее метод Crypto.getRandomValues().
Попробуйте
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
console.log(getRandomInt(3));
// Expected output: 0, 1 or 2
console.log(getRandomInt(1));
// Expected output: 0
console.log(Math.random());
// Expected output: a number from 0 to <1
Синтаксис
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 (или следующего целого числа, большего чем 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); // The maximum is exclusive and the minimum is inclusive
}
Примечание: Может возникнуть соблазн использовать 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); // The maximum is inclusive and the minimum is inclusive
}
Спецификации
| Спецификация |
|---|
| Спецификация языка ECMAScript® 2027 # sec-math.random |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
random |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random