Math.random()
Содержание- Синтаксис
- Особенности генерации случайных чисел
- Случайное число в диапазоне
- Целое число в диапазоне
- Случайное число в диапазоне включительно max
- Итого
Math.random() - это функция встроенного объекта Math, которая возвращает псевдослучайное число с плавающей запятой из диапазона от 0 включительно, до 1 не включительно.
Синтаксис
Math.random()
У метода нет параметров.
Опубликуем результат в console.
let randomNumber = Math.random()
console.log(randomNumber)
// или просто
console.log(Math.random())
Особенности генерации случайных чисел
1. Math.random() генерирует случайные числа на основе алгоритма, который в итоге можно просчитать, поэтому метод не подходит там, где речь идет о безопасности.
2. Разработчик или пользователь не может выбрать алгоритм, который будет использовать метод для генерации рандомного числа.
3. Math.random() формирует числа похожие на 0.6592126750964376 или 0.4571938784553331. В дальнейшем результат масштабируются до нужного формата и диапазона.
4. Результатом метода может быть ноль, но единица никогда.
5. В сферах связанных с безопасностью рекомендуется использовать Web Cryptography API и его методы getRandomValues() и generateKey().
Случайное число в диапазоне
Для того, чтобы получить случайное число в заданном интервале можно использовать следующую функцию.
function getRandomNumber(min, max) {
return Math.random() * (max - min) + min
}
Целое число в диапазоне
Получаем целое число от минимума (включительно) до максимума (не включительно)
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min) + min)
}
или
function getRandomNumber(min, max) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min) + min)
}
ceil() - округляет в большую сторону, floor() в меньшую.
Случайное число в диапазоне включительно max
Функция учитывает недостатки предыдущих решений и выводит случайные числа от и до включительно для обоих случаев.
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min
}
или
function getRandomNumber(min, max) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min + 1)) + min
}
или
function getRandomNumber(min, max) {
return Math.round(min - 0.5 + Math.random() * (max - min + 1))
}
round() - округляет до ближайшего целого.
Итого
Math.random() генерирует псевдослучайное число от 0 до 1 (не включительно). Метод не содержит параметров, а его результаты удобно форматировать, тем самым получая случайные целые или дробные числа в необходимом диапазоне.