Как сделать рандом в 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
Все интервалы имеют одинаковую длину, что выравнивает вероятность получения случайных чисел.
JavaScript Случайные числа
Math.random() возвращает случайное число от 0 (включительно) до 1 (исключительно):
Пример
Math.random(); // возвращает случайное число
Math.random() всегда возвращает число меньше 1.
JavaScript Случайные (рандомные) целые числа
Math.random() используется с Math.floor() может использоваться для возврата случайных целых чисел.
Пример
Math.floor(Math.random() * 10); // возвращает случайное целое число от 0 до 9
Пример
Math.floor(Math.random() * 11); // возвращает случайное целое число от 0 до 10
Пример
Math.floor(Math.random() * 100); // возвращает случайное целое число от 0 до 99
Пример
Math.floor(Math.random() * 101); // возвращает случайное целое число от 0 до 100
Пример
Math.floor(Math.random() * 10) + 1; // возвращает случайное целое число от 1 до 10
Пример
Math.floor(Math.random() * 100) + 1; // возвращает случайное целое число от 1 до 100
Правильная рандомная (случайная) функция
Как видно из приведенных выше примеров, было бы неплохо создать правильную рандомную (случайную) функцию, которая будет использоваться для всех рандомных (случайных) целочисленных целей.
Эта функция JavaScript всегда возвращает случайное число от min (включено) до max (исключено):
Пример
function getRndInteger(min, max) <
return Math.floor(Math.random() * (max — min) ) + min;
>
Эта функция JavaScript всегда возвращает случайное число от min до max (оба включены):
Пример
function getRndInteger(min, max) <
return Math.floor(Math.random() * (max — min + 1) ) + min;
>
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА
курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
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

В разработке программного обеспечения часто возникает необходимость генерировать случайные числа. Это может быть полезно для создания уникальных идентификаторов, для реализации логики игр и многого другого. В JavaScript для генерации случайных чисел используется встроенная функция Math.random(). Но эта функция генерирует случайное число в диапазоне от 0 (включительно) до 1 (не включительно). Что если нужно получить случайное число в определенном диапазоне? Например, между 10 и 20?
Решение этой проблемы заключается в применении некоторых математических операций к результату, возвращаемому функцией Math.random(). Чтобы получить случайное число в диапазоне от min до max, можно использовать следующий код:
function getRandomInt(min, max)
В этом коде функция getRandomInt принимает два параметра: минимальное и максимальное значения диапазона. Функции Math.ceil и Math.floor используются для округления этих значений до ближайшего целого числа, чтобы убедиться, что результат будет целым числом. Затем Math.random() умножается на разницу между max и min + 1, чтобы получить случайное число в нужном диапазоне. Наконец, к полученному результату прибавляется min, чтобы сместить диапазон.
Итак, если нужно получить случайное число между 10 и 20, можно вызвать эту функцию следующим образом:
let randomInt = getRandomInt(10, 20);
В результате переменная randomInt будет содержать случайное целое число в диапазоне от 10 до 20.
Это простой и эффективный способ генерации случайных чисел в заданном диапазоне в JavaScript.
