Почему я должен комбинировать Math.floor с Math.random?

Почему кто-нибудь звонил Math.floor в результат Math.random? Я видел, как он использовался как:

Math.floor(Math.random() * num);

Может кто-нибудь объяснить пожалуйста?

Ответ 1

Math.random возвращает число с плавающей запятой между 0 и 1.

Возвращает псевдослучайное число с плавающей запятой в диапазоне [0, 1), которое равно 0 (включительно), но не включая 1 (исключение), которое вы можете масштабировать до нужного диапазона.

Умножая это на n, дает число с плавающей запятой между 0 (включительно) и n (исключение).

Math.floor затем используется для преобразования этого числа с плавающей запятой в целое число от 0 до n - 1 (включительно).

Ответ 2

Разрушая Math.floor(Math.Random() * num) вниз в отдельные части и объясняя каждую часть, вы получите следующее:

Math.random() дает вам случайное десятичное число от 0 до 1, включая 0, но не включая 1. Таким образом, он может дать вам что-то вроде 0.38548569372.

Math.random() * num дает случайное десятичное число от 0 до num, включая 0, но не включая num. Итак, если num равно 10, это может дать вам 3.8548569372.

Math.floor(Math.random() * num)) дает случайное целое число от 0 до num, включая 0, но не включая num. Таким образом, это может дать вам 3.

Math.floor() усекает десятичное число только в целую часть. Случайное целое часто используется для получения случайного значения из массива (который должен быть целым числом).

Ответ 3

Math.random() даст вам длинный, случайный десятичный знак. Обычно, как правило, умножается на десятичное число на 10, 100, 1000 и т.д., Чтобы получить случайное целое число. Однако, поскольку такое десятичное число так долго, чтобы получить абсолютное целое число, вы используете Math.floor() для округления этого числа.

Ответ 4

Зачем мне комбинировать Math.floor С Math.random?

Вы объединяете их, потому что иначе он вернет float. Использование Math.floor гарантирует, что это целое число внутри указанного диапазона.

Math.random возвращает плоскость между 0 и 1. Умножая ее на num или max range, вы получаете значение с максимальным числом (1 * num). Поэтому снова Math.floor просто заставляет его быть целым числом.


За кулисами:

СЛУЧАЙНЫЙ НОМЕР → .35 → Умножается на max (num) из 11 → Получает 3.85 → Math.floor(3.85) → 3.


Имейте в виду, num - MAX + 1. Установка num в 5 приведет к генерации чисел 1-4!


Вы можете проверить эту ссылку для получения дополнительной информации: http://www.javascriptkit.com/javatutors/randomnum.shtml

Тада:)

Ответ 5

Math.random() возвращает что-то вроде 0.8747230430599302 между [0,1)

Мы используем .floor для округления до ближайшего целого числа. Например:

Math.random()*5 == 2.5889716914389282 Это порождает число между [0,5].

Math.floor(Math.random()*5) == 2 //in this scenario Создает число между [0,4]

Ответ 6

Он использовал для получения целочисленного случайного числа между 0 и (max - 1).

С другой стороны, быстрее использовать | 0, как в

const randomInt = Math.random() * num | 0;

| 0 является двоичным или 0, что в спецификации JavaScript эффективно говорит, что результат преобразуется в целое число до того, как произойдет |. Обратите внимание, что | 0 не совпадает с Math.floor. | 0 раундов до 0, тогда как Math.floor округляется вниз.

         | 0   Math.floor         
------+------+------------
  2.5 |   2  |   2
  1.5 |   1  |   1
  0.5 |   0  |   0
 -0.5 |   0  |  -1
 -1.5 |  =1  |  -2
 -2.5 |  -2  |  -3

Ответ 7

var num = Math.floor(Math.random() * 1000); // e.g. 885

var flNum = Math.random() * 1000; //e.g. 885.9936205333221

Попробуйте Math.random() * 1000, например, вы можете получить что-то вроде этого: 885.9936205333221, во многих случаях нам нужно округленное число, поэтому многие разработчики используют его с Math.floor или Math.ceil, чтобы получить целое число, например 885, если в вашем случае вы не против иметь число с плавающей точкой, оставьте его как есть...

Для получения дополнительной информации о работе Math.floor, проверьте эту ссылку:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor