| ||||
| ||||
|
Важные объявления |
|
25.05.2005, 02:16 TS | #1 (permalink) |
Ветеран
Регистрация: 25.05.2005
Адрес: Москва
Сообщений: 1,210
|
Правила игры. На 24 клетках расположены случайным образом 12 одноклеточных кораблей. Игрок поочередно "стреляет". За каждый подбитый корабль - 1000$. 2 промаха (можно не подряд) - стоп игра. 2 первых промаха - утешительный приз 500$. Каково общее МО игры и какова вероятность подбить 1, 2, ... , 12 кораблей? Никак не пойму, как это сосчитать. При игре до первого промаха - всё просто. 12/24*11/23*10/22 и т.п. А вот куда пристегнуть второй промах?
P.S. Если кто не в курсе - это в "Арбате". |
0 |
25.05.2005, 08:04 | #2 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
2 Mercator Игрок "стреляет" бесплатно? Тогда в чем пробема? "Стреляй" пока не соберешь столько денег, сколько сможешь унести. Как выглядит поле из 24 клеток? 6х4? линия 1х24? Сколько стоит плата за участие в игре?
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
25.05.2005, 08:48 | #3 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
2 Mercator Короче наваял симулятор. Если стоимость игры за 2 поытки составляет 1000$, то имеем жуткий плюс в +98.6%. Если стоимость игры за 2 поытки составляет 2000$, то имеем минус -3.45%. Код:
procedure TForm1.Button1Click(Sender: TObject); type zzz=array[1..24] of integer; const zeroArPole24: zzz=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); var k,kk,i,j,r: integer; ArPole24: zzz; cntMiss: integer; cntHit: integer; res: real; function myRandom: integer; begin myRandom:=Random(24)+1; end; begin res:=0; kk:=10000000; for k:=1 to kk do begin ArPole24:=zeroArPole24; res:=res-2000; //плата за участие в игре. 1000 или 2000 // расставляем корабли j:=0; while j<>12 do begin r:=myRandom; if ArPole24[r]=0 then begin ArPole24[r]:=1; Inc(j); end; end; //стреляем cntMiss:=0; cntHit:=0; while cntMiss<>2 do begin r:=myRandom; if ArPole24[r]=1 then begin ArPole24[r]:=2; // типа стреляли в эту клетку Inc(cntHit); res:=res+1000; // подбили корабль end; if ArPole24[r]=0 then begin ArPole24[r]:=2; // типа стреляли в эту клетку Inc(cntMiss); end; end; // типа 2 раза сразу промахнулись if cntHit=0 then res:=res+500; end; res:=res/kk; end;
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |