← Все вопросы
Как получить случайное целое число в диапазоне на JavaScript?
5
Знаю, что есть Math.random(), но он выдаёт что-то вроде 0.5273.... А мне нужно целое, например от 1 до 6 (как кубик). Как правильно?
2 ответа
9
✓ Принятый ответ — помог автору
Math.random() действительно даёт дробь в диапазоне [0, 1). Чтобы получить целое от min до max включительно:
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
randomInt(1, 6); // кубик: 1..6
Как это работает: (max - min + 1) — сколько всего вариантов, Math.random() * ... растягивает дробь на этот диапазон, Math.floor округляет вниз до целого, + min сдвигает к нужному началу.
Для кубика 1..6: Math.floor(Math.random() * 6) + 1.
4
Частая ошибка — взять Math.round вместо Math.floor. С round крайние значения выпадают в два раза реже остальных, и распределение становится неравномерным. Всегда используй Math.floor для генерации случайного целого.
Ваш ответ
Войдите, чтобы ответить на вопрос.