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 July 2015.
Статический метод Math.random()
возвращает псевдослучайное число с плавающей запятой, которое больше или равно нулю и меньше единицы с приблизительно равномерным распределением в этом диапазоне. В дальнейшем это число можно «отмасштабировать», привести к нужному диапазону. Выбор начального числа для алгоритма генерации случайных чисел происходит автоматически (зависит от реализации) и не может быть изменён пользователем.
Примечание: Метод 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); // Максимум и минимум включаются
}
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-math.random |
Совместимость с браузерами
BCD tables only load in the browser