Spec-Zone.ru › JavaScript

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

См. также

  • Crypto.getRandomValues()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API