Возможно, многим знакома ситуация, когда в одиночку на пахане достаточно долго не удаётся отгадать комбу. Максимально для определения комбы можно потратить 15 ходов (в течение которых он дважды попытается ударить Вас). Минимально требуется всего 3 хода.
Ниже приводится программа на Turbo Pascal и две таблички в Microsoft Excel, в которых проверяется рандом. Результаты не очень радуют. Чтобы в одиночку угадать комбу, чаще всего требуется от 5 до 13 попыток. Самая большая вероятность (около 11%) угадать комбу - за 7...11 попыток. Самая малая вероятность (около 3,5%) - за 3, 4, 14 и 15 попыток
Проценты угадывания комбы. Тестов выполнено 1000 и 5000. Пахан меняет комбу только после угадывания очередного элемента (всего два раза).
|
угадано с попыток
|
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
%%
|
4,2…3,6
|
3,3…3,5
|
7,7…7,5
|
7,4…7,3
|
10,8…11,7
|
9,8…11,5
|
11,9…10,3
|
11,3…11,2
|
10,5…11,7
|
7,4…6,9
|
7,8…7,1
|
4,7…3,6
|
3,2…3,5
|
текст программы
program pahan;
uses crt;
var ft: text;
rezult : array[1..10000] of byte;
itog : array[3..15] of real;
fileout: string[14];
p, povtor: longint;
pax_komb, i, ag, pechfile, ekr, var_igrok1, var_igrok, var_pahan: byte;
begin
repeat;
clrscr;
repeat
write('CKO/\bKO PA3 povtorjat ? 10, 100, 1000, 10000 ? ');
readln(povtor);
if (povtor < 1) or (povtor > 10000) then povtor:=0;
until povtor >0;
repeat
write('pahan bydet menjat komby kazdii raz ? ( 1 - da, 2 - net ) ');
readln(pax_komb);
until pax_komb in [1, 2];
repeat
writeln('vivodit na ekran kazdyiy igry ? ( 1 - da, 2 - net ) ');
write('( vivod na ekran zamedljaet vichislenija ) ');
readln(ekr);
until ekr in [1, 2];
writeln(' objazatelno vivodjatsja na ekran obshie itogi ');
repeat
write(' soxranjat rezyltati v fail ? ( 1 - da, 2 - net ) ');
readln(pechfile);
until pechfile in [1, 2];
if pechfile=1 then begin
write(' vvedite imja faila (ne bolee 8 simvolov, rasshirenie .txt ) ');
readln(fileout);
end;
randomize;
if pechfile=1 then begin
assign(ft, fileout);
rewrite(ft);
end;
for p:=3 to 15 do itog[p]:=0;
for p:=1 to povtor do begin
rezult[p]:=0;
for i:=1 to 3 do begin
var_pahan:=random(3)+1;
var_igrok:=random(3)+1;
var_igrok1:=var_igrok;
if (pechfile=1) and (var_igrok=var_pahan) then write(ft,'100');
if (ekr=1) and (var_igrok=var_pahan) then write('100');
if var_igrok=var_pahan then inc(rezult[p]);
if var_igrok<>var_pahan then begin
if pax_komb=1 then begin {smena kombi y paxana}
repeat
var_pahan:=random(3)+1;
until var_pahan<>var_igrok1;
end;
repeat
var_igrok:=random(3)+1;
until var_igrok<>var_igrok1;
if (pechfile=1) and (var_igrok=var_pahan) then write(ft,'010');
if (ekr=1) and (var_igrok=var_pahan) then write('010');
if (pechfile=1) and (var_igrok<>var_pahan) then write(ft,'001');
if (ekr=1) and (var_igrok<>var_pahan) then write('001');
if var_igrok=var_pahan then rezult[p]:=rezult[p]+1+i;
if var_igrok<>var_pahan then rezult[p]:=rezult[p]+(2*i)+1;
end; { of if var_igrok<>var_pahan }
end; {of for i:=1 to 3 }
if ekr=1 then writeln;
if pechfile=1 then writeln(ft);
end; {of for p:=1 to povtor}
for p:=1 to povtor do begin
i:=rezult[p];
itog[i]:=itog[i]+1;
end;
for p:=3 to 15 do
begin
itog[p]:=(itog[p]/povtor)*100;
writeln('c ',p,' raz ',itog[p]:5:2,' % ');
end;
if pechfile=1 then begin
for p:=3 to 15 do
write(ft,'c ',p,' raz ',itog[p]:5:2,' % ');
close(ft);
end;
write(' enter: 1 - to start the program again, or 2 - to finish and out to DOS ');
readln(ag);
until ag=2;
end.
для Excel (пахан меняет комбу всякий раз)
заполнить ячейки с А2 по А5001 значениями с 1 по 5000
в ячейки B2, D2, F2 ввести формулу =СЛУЧМЕЖДУ(1;3)
в ячейки C2, E2, G2 ввести формулу =СЛУЧМЕЖДУ(1;2)
выделить ячейки B2, C2, D2, E2, F2, G2 и "тащить" вниз до строки 5001, заполняя значениями.
в ячейку H2 ввести формулу =ЕСЛИ(B2=R2;1;0)
в ячейку I2 ввести формулу =ЕСЛИ(H2=1;0;ЕСЛИ(C2=S2;1;0))
в ячейку J2 ввести формулу =ЕСЛИ(И(I2=0;H2=0);1;0)
в ячейку K2 ввести формулу =ЕСЛИ(D2=T2;1;0)
в ячейку L2 ввести формулу =ЕСЛИ(K2=1;0;ЕСЛИ(E2=U2;1;0))
в ячейку M2 ввести формулу =ЕСЛИ(И(L2=0;K2=0);1;0)
в ячейку N2 ввести формулу =ЕСЛИ(F2=V2;1;0)
в ячейку O2 ввести формулу =ЕСЛИ(N2=1;0;ЕСЛИ(G2=W2;1;0))
в ячейку P2 ввести формулу =ЕСЛИ(И(O2=0;N2=0);1;0)
выделить ячейки H2, I2, J2, K2, L2, M2, N2, O2 и P2 и "тащить" вниз до строки 5001, заполняя значениями
в ячейку R2 ввести формулу =СЛУЧМЕЖДУ(1;3)
в ячейку S2 ввести формулу =СЛУЧМЕЖДУ(1;2)
в ячейку T2 ввести формулу =СЛУЧМЕЖДУ(1;3)
в ячейку U2 ввести формулу =СЛУЧМЕЖДУ(1;2)
в ячейку V2 ввести формулу =СЛУЧМЕЖДУ(1;3)
в ячейку W2 ввести формулу =СЛУЧМЕЖДУ(1;2)
выделить ячейки R2, S2, T2, U2, V2 и W2 и "тащить" вниз до строки 5001, заполняя значениями
в ячейку Y2 ввести формулу =ЕСЛИ(H2=1;1;ЕСЛИ(I2=1;2;ЕСЛИ(J2=1;3;0)))
в ячейку Z2 ввести формулу =ЕСЛИ(K2=1;K2+Y2;ЕСЛИ(L2=1;Y2+3;ЕСЛИ(M2=1;Y2+5;0)))
в ячейку AA2 ввести формулу =ЕСЛИ(N2=1;N2+Z2;ЕСЛИ(O2=1;Z2+4;ЕСЛИ(P2=1;Z2+7;0)))
выделить ячейки Y2, Z2 и AA2 и "тащить" вниз до строки 5001, заполняя значениями
в ячейку AC3 ввести текст "количество ударов"
в ячейку AD3 ввести текст "шанс угадать комбу в %"
в ячейку AC4 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A4)
в ячейку AC5 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A5)
в ячейку AC6 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A6)
в ячейку AC7 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A7)
в ячейку AC8 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A8)
в ячейку AC9 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A9)
в ячейку AC10 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A10)
в ячейку AC11 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A11)
в ячейку AC12 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A12)
в ячейку AC13 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A13)
в ячейку AC14 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A14)
в ячейку AC15 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A15)
в ячейку AC16 ввести формулу =СЧЁТЕСЛИ(AA$2:AA$5001;A16)
в ячейку AD4 ввести формулу =(AC4/5000)*100
в ячейку AD5 ввести формулу =(AC5/5000)*100
в ячейку AD6 ввести формулу =(AC6/5000)*100
в ячейку AD7 ввести формулу =(AC7/5000)*100
в ячейку AD8 ввести формулу =(AC8/5000)*100
в ячейку AD9 ввести формулу =(AC9/5000)*100
в ячейку AD10 ввести формулу =(AC10/5000)*100
в ячейку AD11 ввести формулу =(AC11/5000)*100
в ячейку AD12 ввести формулу =(AC12/5000)*100
в ячейку AD13 ввести формулу =(AC13/5000)*100
в ячейку AD14 ввести формулу =(AC14/5000)*100
в ячейку AD15 ввести формулу =(AC15/5000)*100
в ячейку AD16 ввести формулу =(AC16/5000)*100
установить курсор в пустую ячейку (например АС2) и нажимать клавишу Delete. значения будут пересчитываться. за результатами можно наблюдать в ячейках АС AD
другая табличка для Excel, в которой пахан меняет комбу только после отгадывания очередного элемента (всего два раза).
ячейки с А2 по А5001 заполнить последовательностью чисел от 1 до 5000
ячейка В2 =СЛУЧМЕЖДУ(1;3)
ячейка С2 =ЕСЛИ(B2=1;СЛУЧМЕЖДУ(2;3);ЕСЛИ(B2=3;СЛУЧМЕЖДУ(1;2);1))
ячейка D2 =ЕСЛИ(СУММ(B2:C2)=3;3;ЕСЛИ(СУММ(B2:C2)=4;2;1))
ячейка E2 =СЛУЧМЕЖДУ(1;3)
ячейка F2 =ЕСЛИ(E2=1;СЛУЧМЕЖДУ(2;3);ЕСЛИ(E2=3;СЛУЧМЕЖДУ(1;2);1))
ячейка G2 =ЕСЛИ(СУММ(E2:F2)=3;3;ЕСЛИ(СУММ(E2:F2)=4;2;1))
ячейка H2 =СЛУЧМЕЖДУ(1;3)
ячейка I2 =ЕСЛИ(H2=1;СЛУЧМЕЖДУ(2;3);ЕСЛИ(H2=3;СЛУЧМЕЖДУ(1;2);1))
ячейка J2 =ЕСЛИ(СУММ(H2:I2)=3;3;ЕСЛИ(СУММ(H2:I2)=4;2;1))
выделить ячейки B2, C2, D2, E2, F2, G2, H2, I2 и J2 и заполнить последовательностью вниз до строки 5001
ячейка K2 =ЕСЛИ(B2=$U2;1;0)
ячейка L2 =ЕСЛИ(C2=$U2;1;0)
ячейка M2 =ЕСЛИ(D2=$U2;1;0)
ячейка N2 =ЕСЛИ(E2=$V2;1;0)
ячейка O2 =ЕСЛИ(F2=$V2;1;0)
ячейка P2 =ЕСЛИ(G2=$V2;1;0)
ячейка Q2 =ЕСЛИ(H2=$W2;1;0)
ячейка R2 =ЕСЛИ(I2=$W2;1;0)
ячейка S2 =ЕСЛИ(J2=$W2;1;0)
выделить ячейки K2, L2, M2, N2, O2, P2, Q2, R2 и S2 и заполнить последовательностью вниз до строки 5001
ячейка U2 =СЛУЧМЕЖДУ(1;3)
ячейка V2 =СЛУЧМЕЖДУ(1;3)
ячейка W2 =СЛУЧМЕЖДУ(1;3)
выделить ячейки U2, V2 и W2 и заполнить последовательностью вниз до строки 5001
ячейка Y2 =ЕСЛИ(K2=1;1;ЕСЛИ(L2=1;2;ЕСЛИ(M2=1;3;0)))
ячейка Z2 =ЕСЛИ(N2=1;N2+Y2;ЕСЛИ(O2=1;Y2+3;ЕСЛИ(P2=1;Y2+5;0)))
ячейка AA2 =ЕСЛИ(Q2=1;Q2+Z2;ЕСЛИ(R2=1;Z2+4;ЕСЛИ(S2=1;Z2+7;0)))
выделить ячейки Y2, Z2 и AA2 и заполнить последовательностью вниз до строки 5001
ячейки с АС4 по АС 16 заполнить последовательностью чисел от 3 до 15
ячейка AD4 =СЧЁТЕСЛИ(AA$2:AA$5001;A4 )
ячейка AE4 =(AD4/5000)*100
выделить ячейки AD4 и AE4 и заполнить последовательностью вниз до строки 16