Сводка
Метод Math.random()
возвращает псевдослучайное число с плавающей запятой из диапазона [0, 1)
, то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.
Примечание: метод Math.random()
не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод window.crypto.getRandomValues()
.
Синтаксис
Math.random()
Параметры
Нет.
Примеры
Пример: использование метода Math.random()
Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с поведением при округлении к ближайшему чётному, все эти диапазоны (исключая диапазон с простым вызовом Math.random()
), не точны. Если заданы очень большие границы (253 или выше), возможен крайне редкий случай вычисления обычно исключённой верхней границы.
// Возвращает случайное число между 0 (включительно) и 1 (не включая 1) function getRandom() { return Math.random(); }
// Возвращает случайное число между min (включительно) и max (не включая max) function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; }
// Возвращает случайное целое число между min (включительно) и max (не включая max) // Использование метода Math.round() даст вам неравномерное распределение! function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; }
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. JavaScript 1.0 (только UNIX) / JavaScript 1.1 (все платформы). |
ECMAScript 5.1 (ECMA-262) Определение 'Math.random' в этой спецификации. |
Стандарт | |
ECMAScript 6 (ECMA-262) Определение 'Math.random' в этой спецификации. |
Кандидат в рекомендации |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |