Генерация случайных чисел с ванильным 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);