Math.random()

Содержание

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 (не включительно). Метод не содержит параметров, а его результаты удобно форматировать, тем самым получая случайные целые или дробные числа в необходимом диапазоне.