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

Що відбувається у функції Переможець?

На початку дуелі всі учасники живі: всі три елементи вектора статус набувають значення "живий"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), то, набравшись терпіння, можна отримати результат, близький до теоретичного.

дуель

Мал. 4.23. Тристороння дуель – статистичні випробування

Завдання про тристоронній дуелі наводиться у багатьох книгах18. І що цікаво, вона там вирішується невірно. Апріорі вважається, що у цій дуелі найслабший стрілець (Джон з номером 3) має найгірші шанси вижити. Але якщо він трохи подумає (хитра техніка), то можливість вийти переможцем у нього стає найвищою (52.2(2)%).

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