--- title: Math.random() slug: Web/JavaScript/Reference/Global_Objects/Math/random tags: - JavaScript - Math - Method - Reference - Référence(2) translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---
Метод Math.random()
возвращает псевдослучайное число с плавающей запятой из диапазона [0, 1)
, то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.
{{EmbedInteractiveExample("pages/js/math-random.html")}}
Примечание: метод Math.random()
не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.
Math.random()
Псевдослучайное число с плавающей запятой от 0
(включительно) до 1 (не считая).
Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с поведением при округлении к ближайшему чётному, все эти диапазоны (исключая диапазон с простым вызовом Math.random()
), не точны. Если заданы очень большие границы (253 или выше), возможен крайне редкий случай вычисления обычно исключённой верхней границы.
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; //Максимум и минимум включаются }
Спецификация | Статус | Комментарии |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Изначальное определение. JavaScript 1.0 (только UNIX) / JavaScript 1.1 (все платформы). |
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-math.random', 'Math.random')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Math.random")}}