Главная » Статьи » Мои статьи

Рандом глупой конфеты

Для тех, кто не играл в мосвар, поясняю, что в этой замечательной игре, помимо умных конфет, дающих удвоенный опыт с шансом 90%, есть и глупые конфеты, которые с шансом 90% блокируют получение опыта. Подразумевается, что за 100 дуэлей можно получить 10 ламп, а за 10 дуэлей - 1 лампу. Кстати, если бы шанс глупой был всего на 10% ниже (80%), то количество ламп возросло бы вдвое (20 ламп из 100 дуэлей).

 Мне захотелось смоделировать срабатывание глупой конфеты с помощью генератора случайных чисел. Вначале задаётся количество дней игры под глупой конфетой и количество дуэлей (или групповых боёв) за один день. Отдельно выполняется запрос на отслеживание случаев, когда конфета не срабатывает 3, 4 или 5 раз подряд. 6 и более несрабатываний отслеживаются автоматически. Также запрашивается допустимое количество ламп за один день.

Выбирается число сравнения из интервала от 1 до 10. Если генератор случайных чисел выдает равное ему число, то считается, что конфета не сработала. И так по каждой дуэли дня по всем дням. Затем выбирается следующее число сравнения и процесс повторяется заново. Это не обязательно и сделано только ради смены числа сравнения. В процессе сравнений, на экран выводятся все дуэли дней как с максимальным количеством полученных ламп опыта, так и с минимальным их количеством.

Я задавал программе различные исходные данные. Максимум было 20000 циклов по 160 дуэлей. 

По полученным результатам можно сделать следующие выводы:

-  Чем больше расчётное количество дней и количество дуэлей в день, тем ближе к 90% шанс срабатывания конфеты. 

-  Более 7 подряд несрабатываний конфеты не встречалось.

-  За 160 дуэлей конфета может не сработать от 3-ёх до 40 раз.

- За 20 дуэлей конфета может не сработать до 9 раз.

Разумеется, почти никто не играет безостановочно. Подсчёт статистики я не веду, но по ощущениям шанс конфеты ближе к 80%. Личный мой рекорд - 37 выигранных дуэлей подряд с игроками высших уровней без получения опыта. А на мультах, которые бедны как церковная крыса (без мёда, рарок, шмота...), шанс конфеты часто превышает 90%.  

 

 Не знаю как здесь прикрепить файл с расширением .ехе, поэтому привожу текст программы для языка программирования  Turbo Pascal. Сразу оговорюсь, что я не программист, немного освоил это дело самоучкой пару десятков лет назад, когда возникла необходимость на работе.

program konfetka;
uses crt;
var i,j,k,l,m,c,opit, maxopit, minopit, dni, dyeli, trig, stop_povtor, podrjad, norm: integer;
a, sumopit: longint;
opit_za_den: array [1..160] of integer;
dni_norm: array [1..30000] of byte;
lamp_podr: array [1..18] of byte;
begin
clrscr;
randomize;
sumopit:=0;
maxopit:=0;
minopit:=160;
write('How many days ?  '); readln(dni);
writeln('How many duels and (or) groupe fights with your (or higher)');
write(' level will be held in one day (no more 160) ?  ');
 readln(dyeli);
write(' display combinations of 3 lamps in row ? 1 - yes, 0 - no '); readln(lamp_podr[1]);
write(' display combinations of 4 lamps in row ? 1 - yes, 0 - no '); readln(lamp_podr[2]);
write(' display combinations of 5 lamps in row ? 1 - yes, 0 - no '); readln(lamp_podr[3]);
write(' how many lamps in one day is norma ? '); readln(norm);
for i:=4 to 18 do lamp_podr[i]:=1;

for i:=1 to 10 do begin

 for j:=1 to dni do begin
      opit:=0;

  for k:=1 to dyeli do begin
                        c:=random(10)+1;
                        if c=i then begin
                                     inc(opit);
                                     opit_za_den[k]:=k;
                                    end
                               else opit_za_den[k]:=0;
 if opit>=norm then dni_norm[((i*dni)-dni)+j]:=1 else dni_norm[((i*dni)-dni)+j]:=0;
                       end;
  stop_povtor:=1;
  podrjad:=1;
    for l:=1 to dyeli-1 do begin
  if opit_za_den[l+1]-opit_za_den[l]=1 then begin
                                             inc(stop_povtor);
                                             if podrjad<stop_povtor then
                                                                  inc(podrjad);
                                            end
                                       else stop_povtor:=1;
                           end;

  for l:=1 to 18 do begin
                     if (lamp_podr[l]=1) and (podrjad=l+2) then begin
                                      for m:=1 to dyeli do begin
                                            if opit_za_den[m]>99 then write(opit_za_den[m],' ') else
                                            if opit_za_den[m]>9 then write(opit_za_den[m],'  ') else
                                            if (opit_za_den[m]<10) and (opit_za_den[m]>0) then write(opit_za_den[m],'   ');
                                                           end;
                               writeln(podrjad,' lamps in row in ', j+(dni*(i-1)), ' day');
                                                                end;
                    end;

          if maxopit<opit then begin
                        maxopit:=opit;
                        writeln (' Day ', j+(dni*(i-1)), ' Maximum lamps');
                        for l:=1 to dyeli do begin
                         if opit_za_den[l]>99 then write(opit_za_den[l],' ') else
                         if opit_za_den[l]>9 then write(opit_za_den[l],'  ') else
                         if (opit_za_den[l]<10) and (opit_za_den[l]>0) then write(opit_za_den[l],'   ');
                                             end;
                                             writeln;
                               end;
          if minopit>opit then begin
                        minopit:=opit;
                        write (' Day ', j+(dni*(i-1)),' Minimum lamps  ');
                        for l:=1 to dyeli do begin
                         if opit_za_den[l]>99 then write(opit_za_den[l],' ') else
                         if opit_za_den[l]>9 then write(opit_za_den[l],'  ') else
                         if (opit_za_den[l]<10) and (opit_za_den[l]>0) then write(opit_za_den[l],'   ');
                                             end;
                                             writeln;
                               end;

                      delay(50000);
                      sumopit:=sumopit+opit;
                    end;
  writeln(' Please wait.  ', ((10-i)/10)*100:2:0, ' % to the end of calculation. ');
                  end;

 writeln(' Lamps total ',sumopit,',  Duels in one day ',dyeli);
 writeln(' Days total ', dni, '  The average value is ',(sumopit/(dyeli*dni))*10:2:2,' %');
 writeln(' Days with ',norm,' or more lamps :');
 for a:=1 to 10*dni do if  dni_norm[a]=1 then write(a,', ');
 writeln;
 writeln(' press any key to finish');
   repeat until keypressed;
end.

 

События называются несовместными, если появление одного из них исключает появление других. То есть, может произойти только одно определённое событие, либо другое.

Если происходят несовместные события А и В, то вероятность суммы данных событий равна сумме вероятностей событий:

Р(А+В) = Р(А) + Р(В)

Бросаем игральную кость. Какова вероятность выпадения числа меньшего четырёх?

Числа меньшие четырёх это 1,2,3. Мы знаем, что вероятность выпадения единицы равна 1/6, двойки 1/6, тройки 1/6. Это несовместные события. Можем применить правило сложения. Вероятность выпадения числа меньшего четырёх равна:

1/6 + 1/6 + 1/6 = 0,5  (50%)

Действительно, если исходить из понятия классической вероятности: то число всевозможных исходов равно 6 (число всех граней кубика), число благоприятных исходов равно 3 (выпадение единицы, двойки или тройки). Искомая вероятность равна 3 к 6 или 3/6  = 0,5.

Пусть происходят два несовместных события А и В, их вероятности соответственно равны Р(А) и Р(В). Произведением двух событий  А и В  называют событие А·В, которое состоит в совместном появлении этих событий. Вычисляется по формуле:

Р(А+В) = Р(А) * Р(В)

Бросаем игральную кость два раза. Какова вероятность выпадения двух шестёрок?

Вероятность выпадения шестёрки первый раз равна 1/6. Во второй раз так же равна  1/6. Вероятность выпадения шестёрки и в первый раз и во второй раз равна произведению вероятностей:

(1/6) * (1/6) = 1/36  (2,7%)

Категория: Мои статьи | Добавил: kolanov-kola (27.04.2017)
Просмотров: 716 | Теги: мосвар глупая, глупая конфета, рандом мосвар | Рейтинг: 0.0/0
Всего комментариев: 0
avatar