Случайные числа в JavaScript
- Math.random()
- Случайное число в диапазоне
- Случайное целое число
- Пример с кубиком
- Случайный элемент массива
- Где не использовать Math.random()
- Итого
Случайные числа нужны, когда результат не должен быть заранее известен: бросок кубика, случайная скидка, выбор элемента из массива, простая игра или учебный пример.
В JavaScript для этого чаще всего используют Math.random().
console.log(Math.random());
Результат каждый раз может быть разным:
0.7312494727189052
Math.random()
Math.random() возвращает случайное дробное число от 0 до 1.
let randomNumber = Math.random();
console.log(randomNumber);
Важный момент: 0 может попасть в результат, а 1 - нет.
То есть результат находится в таком диапазоне:
0 <= число < 1
Сам по себе такой результат редко нужен в готовом виде. Обычно его преобразуют под нужный диапазон.
Случайное число в диапазоне
Чтобы получить случайное дробное число от min до max, используют такую формулу:
let min = 10;
let max = 20;
let randomNumber = Math.random() * (max - min) + min;
console.log(randomNumber);
Например, результат может быть таким:
14.6825319140723
Здесь число будет от 10 включительно до 20 не включительно.
Эту формулу удобно вынести в функцию:
function getRandomNumber(min, max) {
return Math.random() * (max - min) + min;
}
console.log(getRandomNumber(10, 20));
Случайное целое число
Чаще нужно не дробное, а целое случайное число. Например, от 1 до 10.
Для этого результат Math.random() умножают на размер диапазона и округляют вниз через Math.floor().
let randomNumber = Math.floor(Math.random() * 10) + 1;
console.log(randomNumber);
Так можно получить целое число от 1 до 10 включительно.
Если нужна универсальная функция, можно записать так:
function getRandomInteger(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInteger(1, 10));
min и max здесь включаются в диапазон. То есть функция может вернуть и 1, и 10.
Пример с кубиком
У кубика шесть граней, поэтому нужно получить случайное целое число от 1 до 6.
function rollDice() {
return Math.floor(Math.random() * 6) + 1;
}
console.log(rollDice());
Результат может быть любым числом от 1 до 6.
Можно использовать уже готовую функцию из прошлого примера:
console.log(getRandomInteger(1, 6));
Случайный элемент массива
Случайные числа часто используют, чтобы выбрать элемент из массива.
let colors = ['red', 'green', 'blue'];
let index = Math.floor(Math.random() * colors.length);
console.log(colors[index]);
Сначала мы получаем случайный индекс от 0 до colors.length - 1, а потом берем элемент массива по этому индексу.
Такой код удобно завернуть в функцию:
function getRandomItem(items) {
let index = Math.floor(Math.random() * items.length);
return items[index];
}
let names = ['Анна', 'Олег', 'Мария'];
console.log(getRandomItem(names));
Где не использовать Math.random()
Math.random() подходит для обычных задач: учебных примеров, игр, случайного выбора, простых интерфейсных эффектов.
Но его не используют для паролей, токенов, ключей и других задач, связанных с безопасностью. Для таких случаев нужны специальные криптографические API.
Итого
Math.random() возвращает случайное дробное число от 0 до 1, где 1 не включается.
Math.random()дает дробное число от0до1.Math.random() * (max - min) + minдает случайное дробное число в диапазоне.Math.floor()помогает получить целое число.Math.floor(Math.random() * (max - min + 1)) + minдает целое число отminдоmaxвключительно.- Для выбора случайного элемента массива нужен случайный индекс.