Почему кто-нибудь звонил Math.floor
в результат Math.random
? Я видел, как он использовался как:
Math.floor(Math.random() * num);
Может кто-нибудь объяснить пожалуйста?
Почему кто-нибудь звонил Math.floor
в результат Math.random
? Я видел, как он использовался как:
Math.floor(Math.random() * num);
Может кто-нибудь объяснить пожалуйста?
Math.random
возвращает число с плавающей запятой между 0 и 1.
Возвращает псевдослучайное число с плавающей запятой в диапазоне [0, 1), которое равно 0 (включительно), но не включая 1 (исключение), которое вы можете масштабировать до нужного диапазона.
Умножая это на n, дает число с плавающей запятой между 0 (включительно) и n (исключение).
Math.floor
затем используется для преобразования этого числа с плавающей запятой в целое число от 0 до n - 1 (включительно).
Разрушая 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()
усекает десятичное число только в целую часть. Случайное целое часто используется для получения случайного значения из массива (который должен быть целым числом).
Math.random()
даст вам длинный, случайный десятичный знак. Обычно, как правило, умножается на десятичное число на 10, 100, 1000 и т.д., Чтобы получить случайное целое число. Однако, поскольку такое десятичное число так долго, чтобы получить абсолютное целое число, вы используете Math.floor()
для округления этого числа.
Зачем мне комбинировать 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
Тада:)
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]
Он использовал для получения целочисленного случайного числа между 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
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