Проведение дуэлей
Функция Вероятность_победы (пункт 4 на рис. 6.38) возвращает вектор, элементы которого – это отношение числа побед каждого участника дуэли к общему количеству дуэлей (третий аргумент функции Верояность_победы; два первых аргумента-вектора – это параметры дуэлянтов: их меткость и тактика), то есть вероятность победы.
Теперь, когда все необходимые функции сформированы, можно проводить статистические испытания (см. пункт 5 на рис. 6.38) и фиксировать вероятности побед участников дуэли, исходя из их меткости и тактики. Если увеличивать число побед (переменная N), то, набравшись терпения[51], можно получить результат, близкий к теоретическому.
Задача о трехсторонней дуэли приводится во многих книгах[52]. И что интересно – она там решается неверно. Априори считается, что в этой дуэли самый слабый стрелок (Джон с номером 3) имеет наихудшие шансы выжить. Но если он немного подумает (хитрая техника), то вероятность выйти победителем у него становится самой высокой (52.2(2)%).
Наше решение (см. пункт 5 на рис. 6.38) говорит о том, что у Джона и так самые высокие шансы выжить (44-46%). Начиная хитрить, он мало чего выигрывает, но подводит Билла – своего товарища по несчастью стрелять хуже Сэма.
Откуда такая ошибка в постановке задачи? Дело в том, что у дуэлянтов есть еще одна, нулевая
тактика. Если участники дуэли ничего не знают о стрелковых качествах соперников, то они бьют в первого попавшегося. Здесь вероятность побед можно подсчитать сразу без компьютера: Сэм – 43.48% (1/(1+0.8+0.5)), Билл – 34.78% (0.8/(1+0.8+0.5)) и Джон – 21.74% (0.5/(1+0.8+0.5)) или 100 - 43.48 - 34.78). Но мы составили программу и для этого случая (см. рис. 6.39).