|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Проектирование arrow MathCAD arrow Трехсторонняя дуэль  

Трехсторонняя дуэль

Оглавление
Трехсторонняя дуэль
Страница 2
Страница 3
Страница 2 из 3

Что происходит в функции Победитель?

В начале дуэли все участники живы: все три элемента вектора статус принимают значение "жив"16. Далее проводится жеребьевка: определяется направление очередности выстрелов (если переменная Очередь равна ], то очередность идет в таком направлении , если -1 — в направлении) и определяется первый стреляющий (переменная Стрелок). Кроме того, обнуляется переменная Убийство, по которой прерывается цикл выстрелов в дуэли.

Математическая модель дуэли опирается на цикл с выходом из середины (while...break): дуэль продолжается, пока не будут сделаны два результативных выстрела. В теле цикла while определяется цель — самый меткий противник, которого убивают (), если, во-первых, не промахиваются () и (And), во-вторых, не (-) стреляют намеренно в воздух. Второе имеет место при хитрой тактике стреляющего () и (And), если метких противников более одного.

Определение следующего стреляющего ведется в цикле с постпроверкой (while...break): цикл прерывается, когда, перебирая очередь, отмеченную выше (), "натыкаются" на

живого участника.

Возвращает функция победитель номер участника дуэли (0, 1 или 2), оставшегося в одиночестве (значение переменной Стрелок по выходу из цикла).

Функция победитель возвращает непредсказуемое целочисленное значение 0, ] или 2, т. к. в ней в трех местах вызывается встроенная в Mathcad функция rnd, которая возвращает псевдослучайное число в интервале от нуля до значения аргумента функции rnd. Этот аргумент у нас равен либо единице (случайный выбор очередности выстрелов и имитация выстрела с вероятностью попадания, пропорциональной меткости стреляющего), либо трем (случайный выбор первого стреляющего — здесь дополнительно работает встроенная функция floor, возвращающая у положительного вещественного числа его "пол" (в смысле не "потолок"— по-английски a floor): floor (0.54) =о,

floor(1.82)=1, floor(2.48)=0 И Т. Д.

Функция Вероятность_победы (пункт 4 на рис. 4.22) возвращает вектор, элементы которого — это отношение числа побед каждого участника дуэли к общему количеству дуэлей (третий аргумент функции вероятность_победы; два первых аргумента-вектора— это параметры дуэлянтов: их меткость и тактика), т. е. вероятность победы.

Теперь, когда все необходимые функции сформированы, можно проводить статистические испытания (см. пункт 5 на рис. 4.23) и фиксировать вероятности побед участников дуэли, исходя из их меткости и тактики. Если увеличивать число дуэлей (переменная n), to, набравшись терпения , можно получить результат, близкий к теоретическому.

Рис. 4.23. Трехсторонняя дуэль — статистические испытания

Задача о трехсторонней дуэли приводится во многих книгах18. И что интересно — она там решается неверно. Априори считается, что в этой дуэли самый слабый стрелок (Джон с номером 3) имеет наихудшие шансы выжить. Но если он немного подумает (хитрая техника), то вероятность выйти победителем у него становится самой высокой (52.2(2)%).

Наше решение (см. пункт 5 на рис. 4.23) говорит о том, что у Джона и так самые высокие шансы выжить (44—46%). Начиная хитрить, он мало чего выигрывает, но подводит Билла — своего товарища по несчастью стрелять хуже Сэма.


« Пред. - След. »


RLBN.ru - Электроника и компьютеры

0.146
Hosted by uCoz