2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 цикл в maxima
Сообщение21.10.2020, 10:03 
Заслуженный участник
Аватара пользователя


22/01/11
2641
СПб
Здравствуйте! Что-то я совсем перестал соображать как кубик бросать. Почему
Код:
(%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 
Заслуженный участник


09/05/12
25179
Скобок не хватает: "тело" цикла должно быть одной командой, а если она "составная", то ее надо заключить в круглые скобки, содержимое - через запятую.

 Профиль  
                  
 
 Re: цикл в maxima
Сообщение23.10.2020, 09:44 
Заслуженный участник
Аватара пользователя


22/01/11
2641
СПб
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 
Заслуженный участник


09/05/12
25179
Так ведь для внешнего цикла скобки тоже нужны. :-)

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group