Math.random()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Статический метод Math.random()
возвращает псевдослучайное число с плавающей запятой, которое больше или равно нулю и меньше единицы с приблизительно равномерным распределением в этом диапазоне. В дальнейшем это число можно «отмасштабировать», привести к нужному диапазону. Выбор начального числа для алгоритма генерации случайных чисел происходит автоматически (зависит от реализации) и не может быть изменён пользователем.
Примечание:
Метод Math.random()
не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Для таких целей используйте Web Crypto API и более точный метод window.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()
), не точны. Если заданы очень большие границы (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); // Максимум и минимум включаются
}
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-math.random> |
Совместимость с браузерами
Loading…