Трехсторонняя дуэль
Оглавление
Трехсторонняя дуэль
Страница 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%). Начиная хитрить, он мало чего выигрывает,
но подводит Билла — своего товарища по несчастью стрелять хуже Сэма.
« Пред. - След. »