2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 цикл в maxima
Сообщение21.10.2020, 10:03 
Аватара пользователя
Здравствуйте! Что-то я совсем перестал соображать как кубик бросать. Почему
Код:
(%i194)   NN:0$
   thru 10 do
   NN:NN+random(6)+1;
   NN;
(%o193)   done

(%o194)   30


но

Код:
(%i197)   NN:0$
   thru 10 do
   x:random(6)+1, NN:NN+x;
   NN;
(%o196)   done

(%o197)   0


я уж не говорю о

Код:
(%i214)   NN:0$
   thru 100 do
   x:random(6)+1, if mod(x,2)=0 then NN:NN+1;
   NN;
ev: improper argument: 1

-- an error. To debug this try: debugmode(true);

 
 
 
 Re: цикл в maxima
Сообщение21.10.2020, 11:33 
Скобок не хватает: "тело" цикла должно быть одной командой, а если она "составная", то ее надо заключить в круглые скобки, содержимое - через запятую.

 
 
 
 Re: цикл в maxima
Сообщение23.10.2020, 09:44 
Аватара пользователя
Pphantom
Вот много раз повторяю следующий эксперимент: 100 раз выбираю среди 0, 1 и 2, если в сумме выбиваю больше 100 очков, причем больше 50 единицами, то считаю эксперимент "удачным". Вот, подсчитываю количество удачных из 10000
Код:
(%i66)   N:0$
   thru 10^5 do
   NN:0, S:0,
   thru 100 do
   (x:random(3), NN:NN+x, if mod(x,2)=1 then S:S+x);
   if NN>100 and S>50 then N:N+1;
   N;
(%o64)   done

(%o65)   false

(%o66)   0


ерунда какая-то:(

 
 
 
 Re: цикл в maxima
Сообщение23.10.2020, 10:01 
Так ведь для внешнего цикла скобки тоже нужны. :-)

-- 23.10.2020, 10:13 --

P.S. Да, на всякий случай... вывод чего-то внутри составных операторов лучше делать функцией print().

Ну и результаты проще смотреть на таком варианте кода:
Код:
N:0$
thru 10^5 do
(
   NN:0, S:0,
   thru 100 do
   (x:random(3), NN:NN+x, if mod(x,2)=1 then S:S+x),
   print(NN,S)
);

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group