Как получить случайное число
Короткий ответ
Math.random() возвращает число от 0 до 1. Чтобы получить целое число в диапазоне, его умножают и округляют вниз:
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(randomInt(1, 100));Случайный элемент массива
Случайный индекс получают тем же способом:
const colors = ['red', 'green', 'blue'];
console.log(colors[Math.floor(Math.random() * colors.length)]);Дробное число
Для дробного числа в диапазоне умножайте без округления:
const randomFloat = (min, max) => Math.random() * (max - min) + min;
const value = randomFloat(1.5, 2.5);
console.log(value >= 1.5 && value < 2.5);Результат:
trueЧастая ошибка
Math.round() вместо Math.floor() делает крайние значения в два раза реже остальных. А для кодов и паролей используйте crypto.getRandomValues(), а не Math.random():
const counts = { 1: 0, 2: 0, 3: 0 };
for (let i = 0; i < 30000; i++) counts[Math.round(Math.random() * 2) + 1]++;
console.log(counts[2] > counts[1] * 1.5 ? 'the middle value comes out twice as often' : 'even');Результат:
the middle value comes out twice as oftenФункции из этого ответа
- Math.random — Возвращает случайное число от 0 до 1.
- Math.floor — Округляет число вниз до целого.