Пытаюсь понять этот фрагмент кода Matlab

#python #matlab #random #ceil

#python #matlab #Случайный #ceil

Вопрос:

Мой друг написал калькулятор боевых шансов Warlords в Matlab, который я хотел бы воспроизвести в Python 3. Я не очень разбираюсь в Python и вообще не знаю Matlab, но я могу вроде как видеть, что происходит в коде Matlab. Эта одна строка меня немного смутила.

 r1 = ceil((rand*10));
  

Запрашивает ли это потолок случайного числа с плавающей запятой от 0-1, а затем умножается на 10?

Комментарии:

1. напротив, он умножает случайное число с плавающей запятой на 10, а затем использует функцию потолка

2. Это действительно код MATLAB? Он должен быть действителен и в Python

3. @roganjosh: любой достаточно короткий фрагмент кода допустим на любом языке программирования. 🙂

4. @roganjosh Я думаю, что для python вам нужно будет импортировать математику, а затем вызвать ее как math.ceil() … аналогичная идея для rand. (Я уверен, что вы это знаете, поэтому упоминаю об этом в интересах будущих читателей этой темы.)

5. @AlexS1 Верно. Но вы также можете сделать from math import ceil так, чтобы в этом не было ничего, что не могло бы быть действительным python. Точка с запятой игнорируется

Ответ №1:

rand выдает случайное число в интервале (0,1) , поэтому rand*10 выдает случайное число в (0,10) (с одинаковой вероятностью). ceil((rand*10)) выдает случайное целое число от 1 и 10 включительно.

Таким образом, соответствующий Python:

 random.randint(1,10)
  

Чтобы заставить приведенный выше код работать, вам потребуется import random ранее в сценарии.

Комментарии:

1. Не указано, интервал равен 0 и 1? Это то, что меня сбило с толку. Спасибо за все ответы. По-видимому, я мог бы просто запустить код на Python и понять это таким образом