Почему я должен комбинировать 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