Генерация случайных чисел с ванильным JS
Сегодня мы рассмотрим, как создавать случайные числа с ванильным JavaScript.
Метод Math.random()
Метод Math.random()
генерирует случайный float (число со знаком после запятой) между 0
и 1
.
// Регистрируется что-то вроде этого: 0.37111265461165543 // каждый раз будет иначе var rand = Math.random(); console.log(rand);
Число, которое генерирует метод Math.random()
, включает 0
(может быть 0
, иногда, хотя я никогда лично не видел, чтобы это произошло), но исключает 1
.
Получение чисел больше чем 0
Чтобы сделать это, мы можем умножить любое возвращаемое значение Math.random()
на число, которое является степенью десяти. Чем больше число, на которое вы умножаетесь, тем больше цифр в номере.
var randomOverZero = function (pow) { return Math.random() * pow; }; var rand100 = randomOverZero(100); console.log(rand100); var rand10000 = randomOverZero(10000); console.log(rand10000);
Получение случайного целого числа
Что если вы хотите получить случайное целое число вместо числа с плавающей точкой?
Для этого мы можем использовать метод Math.floor()
после умножения возвращенного значения Math.random()
на нашу степень десяти.
var randomInteger = function (pow) { return Math.floor(Math.random() * pow); }; var rand100 = randomInteger(100); console.log(rand100); var rand10000 = randomInteger(10000); console.log(rand10000);
Получение случайное число в заданном диапазоне
Наконец, давайте посмотрим, как получить случайное целое число в заданном диапазоне. Например, предположим, что вы хотели число, которое было бы не менее 5, но не больше 42.
Для этого мы создадим вспомогательную функцию, которая принимает min
и max
числа в качестве аргументов.
Затем мы вычтем min
из max
и добавим 1
к max
(иначе оно никогда не будет достигнуто). Мы умножим возвращаемое значение Math.random()
на этот новый номер и добавим к нему min
. Это дает нам случайное плавающее между нашими двумя значениями.
Наконец, мы используем, Math.floor()
чтобы превратить его в целое число и вернуть результат.
var randomNumber = function (min, max) { return Math.floor(Math.random() * (max - min + 1) + min); }; var rand = randomNumber(5, 42); console.log(rand);