Math.random()
Метод Math.random() возвращает псевдослучайное число с плавающей запятой из диапазона [0, 1) , то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.
Интерактивный пример
Примечание: метод Math.random() не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (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
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
Как вывести случайное число в javascript
Напишите функцию randomInteger(min, max) , которая генерирует случайное целое (integer) число от min до max (включительно).
Любое число из интервала min..max должно появляться с одинаковой вероятностью.
Пример работы функции:
alert( randomInteger(1, 5) ); // 1 alert( randomInteger(1, 5) ); // 3 alert( randomInteger(1, 5) ); // 5
Можно использовать решение из предыдущей задачи.
Простое, но неправильное решение
Простое, но неправильное решение
Самое простое, но неправильное решение – генерировать случайное число от min до max и округлять его:
function randomInteger(min, max) < let rand = min + Math.random() * (max - min); return Math.round(rand); >alert( randomInteger(1, 3) );
Функция будет работать, но неправильно. Вероятность получить min и max значения в 2 раза меньше, чем любое другое число.
Если вы запустите приведённый выше пример, то заметите, что 2 появляется чаще всего.
Это происходит потому, что метод Math.round() получает случайные числа из интервала 1..3 и округляет их следующим образом:
число от 1 . до 1.4999999999 округлится до 1 число от 1.5 . до 2.4999999999 округлится до 2 число от 2.5 . до 2.9999999999 округлится до 3
Теперь становится понятно, что 1 получает в 2 раза меньше значений, чем 2 . То же самое с 3 .
Правильное решение задачи
Правильное решение задачи
Есть много правильных решений этой задачи. Одно из них – использовать Math.floor для получения случайного числа от min до max+1 :
function randomInteger(min, max) < // случайное число от min до (max+1) let rand = min + Math.random() * (max + 1 - min); return Math.floor(rand); >alert( randomInteger(1, 3) );
Теперь все интервалы отображаются следующим образом:
число от 1 . до 1.9999999999 округлится до 1 число от 2 . до 2.9999999999 округлится до 2 число от 3 . до 3.9999999999 округлится до 3
Все интервалы имеют одинаковую длину, что выравнивает вероятность получения случайных чисел.
Метод Math.random
Метод Math.random возвращает случайное дробное число от 0 до 1 .
Синтаксис
Math.random();
Применение
Чтобы получить случайное число в определенном промежутке (дробное или целое) следует пользоваться специальными приемами. Получение случайного дробного числа между min и max происходит так:
function getRandomArbitary(min, max) < return Math.random() * (max - min) + min; >
А теперь получим случайное целое число между min и max :
function getRandomInt(min, max) < return Math.floor(Math.random() * (max - min + 1)) + min; >
Пример
Давайте выведем случайное число от 0 до 1 :
console.log(Math.random());
Результат выполнения кода:
0.5416665468657356
Пример
Давайте выведем случайное целое число от 10 до 100 :
function getRandomInt(min, max) < return Math.floor(Math.random() * (max - min + 1)) + min; >console.log(getRandomInt(10, 100));
Результат выполнения кода:
Math.random()
Math.random() — это функция встроенного объекта Math , которая возвращает псевдослучайное число с плавающей запятой из диапазона от 0 включительно, до 1 не включительно.
Синтаксис
Math.random()
У метода нет параметров.
Опубликуем результат в console.
let randomNumber = Math.random() console.log(randomNumber) // или просто console.log(Math.random())
Math.random()
Особенности генерации случайных чисел
1. Math.random() генерирует случайные числа на основе алгоритма, который в итоге можно просчитать, поэтому метод не подходит там, где речь идет о безопасности.
2. Разработчик или пользователь не может выбрать алгоритм, который будет использовать метод для генерации рандомного числа.
3. Math.random() формирует числа похожие на 0.6592126750964376 или 0.4571938784553331. В дальнейшем результат масштабируются до нужного формата и диапазона.
4. Результатом метода может быть ноль, но единица никогда.
5. В сферах связанных с безопасностью рекомендуется использовать Web Cryptography API и его методы getRandomValues() и generateKey() .
Случайное число в диапазоне
Для того, чтобы получить случайное число в заданном интервале можно использовать следующую функцию.
function getRandomNumber(min, max)
getRandomNumber(0.1, 0.2)
Целое число в диапазоне
Получаем целое число от минимума (включительно) до максимума (не включительно)
function getRandomNumber(min, max)
function getRandomNumber(min, max)
ceil() — округляет в большую сторону, floor() в меньшую.
getRandomNumber(1, 4)
Случайное число в диапазоне включительно max
Функция учитывает недостатки предыдущих решений и выводит случайные числа от и до включительно для обоих случаев.
function getRandomNumber(min, max)
function getRandomNumber(min, max)
function getRandomNumber(min, max)
round() — округляет до ближайшего целого.
getRandomNumber(1, 4)
Итого
Math.random() генерирует псевдослучайное число от 0 до 1 (не включительно). Метод не содержит параметров, а его результаты удобно форматировать, тем самым получая случайные целые или дробные числа в необходимом диапазоне.
Skypro — научим с нуля
