@modernstyle
Code GOD

Вопрос новичка: Math.floor / Math.random?

Сразу извиняюсь за лоховский вопрос


Делаю игральные «кубики» по примеру в учебнике, появился вопрос —

Вот как в учебнике:


var die = Math.floor(Math.random()*6 + 1);


Таким образом автор утверждает, что мой результат всегда будет равен от 1 до 6, включительно.

Но, если Math.random( ) дает мне числа от 0 до 1, после чего мы это число умножаем на 6 и прибавляем 1, затем округляя до ближайшего целого — разве не существует небольшой вероятности получения числа 7?


Спасибо
  • Вопрос задан
  • 19762 просмотра
Решения вопроса 1
LeoCcoder
@LeoCcoder
рандом генерирует в диапазоне [0;1), поэтому 7 там никогда не получится
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
ivnik
@ivnik
Math.random() выдает числа от 0 до 1, не включая 1, т.е. числа в диапазоне [0, 1), соответственно диапазон Math.floor(Math.random()*6 + 1) = [1, 7)
Поэтому после откидывания дробной части получится число от 1 до 6.
Ответ написан
freeek
@freeek
Math.floor округляет число в меньшую степень :)
Ответ написан
Комментировать
zona7o
@zona7o
Веб-разработчик
Вроде поэтому:
Math.random возвращает от 0(включительно) до 1(не включительно).
Источник: javascript.ru/Math.random
Ответ написан
NekitoSP
@NekitoSP
Вот только вчера искал про перевод Float в Int в Java, как раз в одном из ответов на StackOverflow видна разница между floor/truncate/round stackoverflow.com/questions/1295424/how-to-convert-float-to-int-with-java, и в дополнение к этому описание random'a:
random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
то есть
0.0 <= random() < 1.0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы