Math.random()

Статический метод Math.random() возвращает псевдослучайное число с плавающей запятой, которое больше или равно нулю и меньше единицы с приблизительно равномерным распределением в этом диапазоне. В дальнейшем это число можно «отмасштабировать», привести к нужному диапазону. Выбор начального числа для алгоритма генерации случайных чисел происходит автоматически (зависит от реализации) и не может быть изменён пользователем.

Примечание: метод Math.random() не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Для таких целей используйте Web Crypto API и более точный метод window.crypto.getRandomValues().

Интерактивный пример

Синтаксис

js
Math.random()

Параметры

Нет.

Возвращаемое значение

Псевдослучайное число с плавающей запятой от 0 (включительно) до 1 (не включая).

Примеры

Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с округлением к ближайшему чётному, используемые в приведённых функциях диапазоны (исключая диапазон с простым вызовом Math.random()), не точны. Если заданы очень большие границы (253 или выше), возможен крайне редкий случай достижения обычно исключённой верхней границы.

Получение случайного числа от 0 (включительно) до 1 (не включая)

js
function getRandom() {
  return Math.random();
}

Получение случайного числа в заданном интервале

Этот пример возвращает случайное число в заданном интервале. Возвращаемое значение не менее (и может быть равно) min и не более (и не равно) max.

js
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

Получение случайного целого числа в заданном интервале

Этот пример возвращает случайное целое число в заданном интервале. Возвращаемое значение не менее min (или следующее целое число, которое больше min, если min не целое) и не более (но не равно) max.

js
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min) + min); // Максимум не включается, минимум включается
}

Примечание: Может показаться заманчивым использовать Math.round() для округления, но это может сделать распределение неравномерным и оказаться не тем, что вам нужно.

Получение случайного целого числа в заданном интервале, включительно

Функция getRandomInt() выше включает минимальное значение, но не включает максимальное. Но что если вам нужно, чтобы включалось и минимальное, и максимальное значение? Функция getRandomIntInclusive() решает этот вопрос.

js
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

Смотрите также