Math.ceil ; Math.random

Вот очень простой вопрос, который я не могу решить на мой взгляд:

В JS, если я сделаю:

Math.random() я получу случайные числа от 0 до 1 (включая 0, не включая 1)

Итак, если я сделаю Math.ceil(Math.random() * 100), я получу случайные числа от 0 до 100. Я прав?

Я получу 0, если Math.random() был ровно 0, что возможно, как я прочитал в документации.

Однако я везде читал, что, выполняя это «Math.ceil(Math.random() * 100)», я получу числа от 1 до 100.

Пожалуйста, может кто-нибудь прояснить эту ситуацию?

Спасибо!

Math.random() -> [0; 1) Math.ceil(Math.random()) -> [0; 100]

Отвечает ли это на ваш вопрос? Каковы шансы, что Math.random вернет 0?

pilchard 23.07.2023 00:01
0.9900000000000001 * 100 = 99.00000000000001, а потолок 99.00000000000001 равен 100, поэтому все, что выше 0.99, приведет к 100
Arleigh Hix 23.07.2023 00:07

если вы, например, попытаетесь выполнить значения примитивов Math.ceil(0.1) или Math.ceil(0.2), вы всегда получите 1 в результате вызова .ceil. Поэтому вы всегда получите 100% или 1 (это одно и то же)

Lucas David Ferrero 23.07.2023 00:28

@LucasDavidFerrero OP умножается на 100 перед округлением

pilchard 23.07.2023 00:56
Поведение ключевого слова "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) для оценки ваших знаний,...
0
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Math.random() выдаст вам случайное число от 0 (включительно) до 1 (исключительно), но вероятность того, что это именно 0, невероятно мала.

Math.ceil() округляется. Учитывая, что шансы, что вы получите ровно 0, астрономически малы, вы, скорее всего, получите что-то выше 0 от Math.random(), поэтому почти (но не полностью) невозможно получить 0 от Math.ceil(Math.random()*100).

Так что Math.ceil(Math.random()*100)) даст вам крошечный шанс получить 0, но обычно от 1 до 100 (включительно).

Обычно вы хотите сделать Math.floor(), что округляется в меньшую сторону. У него нет этого пограничного случая, потому что Math.random() никогда не дает вам 1, поэтому никогда не бывает небольшого шанса, что Math.floor(Math.random()*100)) даст вам 100. Это всегда равномерно распределено от 0 до 99 включительно.

Извините, я по ошибке проголосовал за вас и не увидел этого, пока не прошло несколько минут, поэтому я не могу отменить это, пока сообщение не будет отредактировано.

some 23.07.2023 00:18

Это очень странно, но я получил 2 отрицательных голоса за это. Это просто люди наваливаются? Я подумал, что это был интересный ответ .. wtf

Evert 23.07.2023 00:19

Это интересный ответ. Должно быть, я случайно понизил голос при смене окон.

some 23.07.2023 00:22

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