Lyuda сказав(ла):
Да, выложи пожалуйста, мы и тебе ошибки покажем.
посмотрим!
еще раз повторю что программа тупая! т.е. написано тупо.
не потому что я тупой. я мог написать и в 5 строк как вы.
просто
1. было очень поздно
2. я лет 7-8 не видел в глаза турбо поскаль
3. и я хотел по полочкам разложить чтобы во всем разобратся.
итак:
===================================================
Program koza;
Var
i, dver_s_mahinoy, vibor_igroka, otkritaya_dver, veduhiy, kolvo_pobed : integer;
Begin
kolvo_pobed:=0;
for i:=1 to 10000 do
begin
dver_s_mahinoy:=random(3)+1; { Вероятность 1/3. Это машина }
vibor_igroka:=random(3)+1; { Вероятность 1/3. Это выбор игрока }
{ а теперь все возможные 9 вариантов без алгоритмов! просто условия }
if (dver_s_mahinoy=1) and (vibor_igroka=1) then
begin
veduhiy:=random(2)+1; { Вероятность 1/2 это выбор ведущего при условии что Игрок сразу угодал где машина }
if veduhiy=1 then otkritaya_dver:=2;
if veduhiy=2 then otkritaya_dver:=3;
end;
if (dver_s_mahinoy=1) and (vibor_igroka=2) then otkritaya_dver:=3;
if (dver_s_mahinoy=1) and (vibor_igroka=3) then otkritaya_dver:=2;
if (dver_s_mahinoy=2) and (vibor_igroka=1) then otkritaya_dver:=3;
if (dver_s_mahinoy=2) and (vibor_igroka=2) then
begin
veduhiy:=random(2)+1; { см. выше }
if veduhiy=1 then otkritaya_dver:=1;
if veduhiy=2 then otkritaya_dver:=3;
end;
if (dver_s_mahinoy=2) and (vibor_igroka=3) then otkritaya_dver:=1;
if (dver_s_mahinoy=3) and (vibor_igroka=1) then otkritaya_dver:=2;
if (dver_s_mahinoy=3) and (vibor_igroka=2) then otkritaya_dver:=1;
if (dver_s_mahinoy=3) and (vibor_igroka=3) then
begin
veduhiy:=random(2)+1; { см. выше }
if veduhiy=1 then otkritaya_dver:=1;
if veduhiy=2 then otkritaya_dver:=2;
end;
{ В следующих 6 строках игрок всегда меняет свой выбор на др дверь }
if (otkritaya_dver=1) and (vibor_igroka=2) then vibor_igroka:=3;
if (otkritaya_dver=1) and (vibor_igroka=3) then vibor_igroka:=2;
if (otkritaya_dver=2) and (vibor_igroka=1) then vibor_igroka:=3;
if (otkritaya_dver=2) and (vibor_igroka=3) then vibor_igroka:=1;
if (otkritaya_dver=3) and (vibor_igroka=1) then vibor_igroka:=2;
if (otkritaya_dver=3) and (vibor_igroka=2) then vibor_igroka:=1;
{ надеюсь вам не надо объяснять почему не возможен вариант otkritaya_dver=1 and vibor_igroka=1 ?
т.к. это видно из программы выше, т.е. открытая дверь всегда не та что выбрал игрок вначале }
if vibor_igroka=dver_s_mahinoy then kolvo_pobed:=kolvo_pobed+1;
writeln(i,' igr. Kol-vo pobed = ', kolvo_pobed);
End;
readLn;
End.
===================================================
Где ошибка?
Могу выложить результат этой программы.
Результат программы напомню ~ 1/2
т.е. 50% выгреша если игрок меняет свой первоночальный выбор