JavaScript: как сгенерировать случайное число в диапазоне
Мы, как разработчики программного обеспечения, часто попадаем в ситуации, когда нам нужно добавить в код некоторую долю случайности.
В этой статье мы рассмотрим, как генерировать случайные числа в JavaScript. Мы также коснемся нескольких встроенных методов работы со случайными числами. В конце мы применим эти знания, написав функцию для моделирования шестигранной матрицы.
Генерация случайных чисел в JavaScript
Math.random()
в JavaScript генерирует случайное число с плавающей запятой (десятичное) между 0
и 1
(включая 0, но не 1). Давайте проверим это, выполнив:
console.log(Math.random())
Это выведет число с плавающей запятой, подобное следующему:
0.9261766792243478
Это полезно, если вы имеете дело с процентами, поскольку любое значение между 0
и 1
, округленное до двух десятичных знаков, можно рассматривать как процентиль.
Генерация случайных целых чисел в диапазоне
Однако мы обычно не имеем дело с числами с плавающей запятой в диапазоне от 0 до 1. Итак, давайте посмотрим, как округлять числа с плавающей запятой.
Мы можем округлить число с плавающей запятой, используя Math.floor()
. Точно так же мы можем округлить число с помощью функции Math.ceil()
:
console.log(Math.floor(3.6))
console.log(Math.ceil(3.6))
Это даст нам результат:
3
4
Давайте сгенерируем случайное число между min
и max
, не включая max
:
function randomNumber(min, max){
const r = Math.random()*(max-min) + min
return Math.floor(r)
}
В качестве альтернативы мы могли бы включить max
в функцию Math.ceil()
.
Мы умножаем на (max-min)
, чтобы преобразовать диапазон [0,1] в [0, max-min
]. Далее, чтобы получить случайное число в нужном диапазоне, мы складываем min
. Наконец, мы округляем это до целого числа, используя Math.floor()
.
Давайте вызовем этот метод несколько раз и посмотрим на результат:
for (var i = 0; i < 10; i++) {
console.log(randomNumber(0, 10))
}
Это выведет что-то похожее на:
8
3
3
0
1
1
8
2
8
8
Вывод
Генерация псевдослучайных чисел в программе может использоваться для имитации непредсказуемости врага в игре или для рандомизации лесов в блочной игре, которую мы все знаем и любим. Его также можно использовать для моделирования случайных входных данных при тестировании другой написанной вами программы.
В любом случае генерация случайного числа является важным инструментом в наборе инструментов любого инженера, и его следует максимально расширить с помощью различных методов и алгоритмов генерации. Эта статья была лишь первым шагом в изучении генерации случайных чисел.