Если я использую этот код:
Math.floor(Math.random() *6)
это даст мне случайное число от 1 до 5, я прав?
Было бы то же самое, чтобы закодировать это:
Math.floor(Math.random() *6)+1
как это?
Math.floor(Math.random() *7)
потому что они оба дадут мне число от 1 до 6?
Просто просматривая учебник, он не объяснил эту функцию, и мне любопытно, мог ли он использовать второй пример вместо первого.
На подобные вопросы лучше всего ответить, проведя несколько экспериментов. Просто console.info каждое выражение большое количество раз. Что вы наблюдаете?
Нет, они не будут одинаковыми Math.floor(Math.random() *6)+1
это случайное значение между 1-6
(6 - максимальное значение)
. Минимальное значение этого всегда равно 1
, так как мы добавляем 1
в конце.
Math.floor(Math.random() *7)
— случайное значение между 0-7
@ Эдуард Есть ли какая-то конкретная причина, по которой вы не приняли другой ответ и приняли мой.
Math.random()
вернет число от 0 (включительно) до 1 (исключительно), то есть число может достигать нуля, но никогда не достигнет 1. Мы умножаем это на 6, так что теперь оно увеличивается от 0 до почти 6. Тогда мы .floor
это означает, что теперь у нас есть целое число от 0 до 5. Добавление 1 переводит это целое число в диапазон от 1 до 6 (включая обе конечные точки).
Math.floor(Math.random() *7)
получит случайное число от 0 до 1, затем умножит на 7, чтобы получить от 0 до почти 7, тогда пол будет 0-6. Так близко, но не совсем.
Документы: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
Math.random()
дает вам псевдослучайное число от 0 до 1.
Умножьте его на 6, вы получите диапазон от 0 до 6. Умножьте его на 7, вы получите 0-7. Добавьте 1, и оба конца поднимутся на 1.
Math.floor()
— это «наибольшее целое число, не превышающее…». Просто округляет в меньшую сторону.
Итак, сложив все это вместе, Math.floor(Math.random() *6)
это: взять какое-то псевдослучайное число где-то между 0 и 6 и округлить его в меньшую сторону - это будет одно из [0, 1, 2, 3, 4, 5]
(вы не получите 6, потому что с Math.random() вы' никогда не получится ровно 1).
Точно так же Math.floor(Math.random() *6)+1
- это указанное выше плюс 1 (то есть подбрасывание обычного кубического кубика). А Math.floor(Math.random() *7)
означает какое-то число из [0, 1, 2, 3, 4, 5, 6]
.
Начните понимать, что
Math.random()
возвращает число с плавающей запятой между0
(включительно) и1
(не включительно). Таким образом,Math.random() * 6
вернет плавающее число в диапазоне[0,6)
, а затемMath.floor(Math.random() * 6)
целое число в диапазоне[0,5]
.