Как понять эту встроенную функцию в JavaScript «Math.floor(Math.random() *6)+1»?

Если я использую этот код:

Math.floor(Math.random() *6)

это даст мне случайное число от 1 до 5, я прав?

Было бы то же самое, чтобы закодировать это:

Math.floor(Math.random() *6)+1

как это?

Math.floor(Math.random() *7)

потому что они оба дадут мне число от 1 до 6?

Просто просматривая учебник, он не объяснил эту функцию, и мне любопытно, мог ли он использовать второй пример вместо первого.

Начните понимать, что Math.random() возвращает число с плавающей запятой между 0 (включительно) и 1 (не включительно). Таким образом, Math.random() * 6 вернет плавающее число в диапазоне [0,6), а затем Math.floor(Math.random() * 6)целое число в диапазоне [0,5].

Shidersz 09.04.2019 22:11

На подобные вопросы лучше всего ответить, проведя несколько экспериментов. Просто console.info каждое выражение большое количество раз. Что вы наблюдаете?

John Coleman 09.04.2019 22:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
69
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Нет, они не будут одинаковыми Math.floor(Math.random() *6)+1 это случайное значение между 1-6(6 - максимальное значение)
. Минимальное значение этого всегда равно 1, так как мы добавляем 1 в конце.

Math.floor(Math.random() *7) — случайное значение между 0-7

@ Эдуард Есть ли какая-то конкретная причина, по которой вы не приняли другой ответ и приняли мой.

Maheer Ali 03.05.2019 14:20

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].

Другие вопросы по теме