Теория вероятности и ковбой мальборо, часть 2

Продолжим немного задачек по терверу, которые могут быть полезны в геймдизайне игр. Тут будет всего 2 задачки, но уже более сложные, чем в первой части. Хотя в целом они все равно легкие, ни каких теорем Байеса или функций распределения Коши не будет. Но решить их интуитивно, уже сложно. К примеру вторую задачу я обязательно включаю в свои тестовые задания (и почему-то процент ее решения … говорит, что у желающих работать геймдизайнерами, она вызывает большие сложности)


Задача 1.
Ковбой Мальборо был обижен трусливым Джо. И теперь у них каждый день происходит дуэль. С 12 часов утра, до 13 дня, они идут к церкви, чтобы разобраться, ну и заодно повеселить народ. Только вот проблема, он очень занят и не может ждать Джо вечно. он ждет 5 минут и уходит по своим делам. Трусливый Джо же в свою очередь очень боится ждать долго, он тоже ждет 5 минут и убегает.
Какова вероятность Ковбою Мальборо встретиться таки с трусливым Джо и свести счеты.

Ну … не хочется тут вдаваться уже в теорию, просто посчитаем.
Задачи такого плана, очень легко решаются графически (вообще это хороший метод решения задач по терверу). Строим график, ось Х это время прибытия 1ого участника дуэли, ось Y время прибытия второго.
Т.е. длина каждого участка 1 час. (если бы было, что один приходит только в первые пол часа, то надо было бы строить не квадрат, а прямоугольник)

Откладываем отрезочек длиной 5 минут (5 минут равны 1/12 часа) на каждой оси, и проводим прямые отсекающие 1/12 и 11/12 от каждой оси (пунктирные линии). Вот область между ними, это количество исходов, когда 1й и 2й стрелок встретятся. Площадь всего квадрата 1ца, это все исходы событий.
Если мы найдем отношение площади этой полоски, к площади всей фигуры, то найдем вероятность того, что стрелки встретятся.
Площадь всей фигуры у нас равна 1це.
Площадь полоски найти сложно. Гораздо проще найти площадь 2х треугольников (это исходы, когда стрелки не встретились)
Площадь треугольника будет
S = 0,5 * 11/12 * 11/12
надеюсь понятно, что одна сторона треугольника 11/12, т.к. 1/12 отрезает отрезок от каждой стороны.
А всего таких треугольников у нас 2.
Так что вероятность не встретиться будет равна
P = 2* S / 1 = 121/144
Собственно тогда вероятность встретиться будет
D = 1-P = 23/144 = 0,159722 = 16%

Задача легко усложняется тем, что стрелки могут приходить в разное время. Время прихода может быть разное по продолжительности. И время ожидания тоже может быть разным. Кто-то может приходить скажем не 1 раз, а несколько. Это лишь усложнит расчет, но не поменяет метод решения.


Задача 2
Ковбой Мальборо как уже упоминалось спасает землю от пришельцев. С помощью своего любимого кольта, он их отстреливает. Поиски инопланетян по прерии утомительное занятие, ему помогает верный Боливар. И вместе с боливаром они отыскивают одного инопланетянина за 3 часа. И убивают прицельным выстрелом в глаз. Некоторые инопланетяне оказываются весьма полезны, и с их трупика можно залутить гравицапу. Гравицапа с них дропается с вероятностью 4%.
Нужно посчитать вероятность добыть гравицапу с 13 инопланетян.
Нужно посчитать необходимое необходимое время, чтобы добыть гравицапу (приемлемой вероятностью 100% добычи считаем вероятность 98%).

Вот тут сразу хочу обратить внимание. Вероятность выбить гравицапу с 13 инопланетян не равна 13*4% = 52%. Это в тестовых заданиях на геймдизайнера, ошибку делает около 90% людей. Стоит только им поменять условие, с 4% до 30%. В их ответе сразу выскакивает 390%. И тут уже интуиция говорит – стоп, больше 100% не бывает. Стоп, может быть случай когда и за 13 попыток не выбьем.
Это к тому, что не надо пользоваться интуицией.
Разбирающиеся в вопросе люди сразу пишут формулу:
P’ = 1-(1-P)^n
Давайте разберемся откуда она берется.
P – это вероятность успеха.
тогда 1-P – вероятность не успеха.
Как мы уже считали выше, возведя это в степень n, мы получим вероятность не успеха за n попыток.
И если от 1цы отнять все это, то получиться вероятность успеха за n попыток. собственно, что нам и нужно.
P’ = 1- (1-0,04)^ 13 = 41,18%

Теперь надо посчитать необходимое время, чтобы точно выбить гравицапу. Т.к. мы знаем время на 1ого инопланетянина, то по сути все сводиться к нахождению необходимого кол-ва инопланетян.

Первый способ найти ответ – перебор.
Для практических целей геймдизайнера не всегда важно находить точный ответ. Иногда важно оценить порядок.
с 13 инопланетян вероятность мы уже знаем, что 41,18% … для 98% нужно брать больше. Возьмем 50 инопланетян. Считаем.
P= 1- (1-0,4)^ 50 = 87,01%
мало …
Возьмем 100
P= 1- (1-0,4)^ 100 = 98,31%, в самый раз, но чуть чуть больше.
немного отнимая от 100, выясним что переход с 97%->98% происходит на 96 инопланетянине.
Если нужно отстрелить 96 штук, то времени на это понадобиться 288 часов.

Если эту задачу решать правильно, то решается она так:
Составляется уравнение
1- (1-0,4)^ X= 98% , где X это неизвестное количество попыток.
Вспоминаем школьный курс, и что такое логарифмы.
(1-0,4)^X = 1-0,98
X = LN(1-0,98)/LN(1-0,4) = 95,8312559541
P = 287,4937678624

В целом видно, что подбором мы были крайне близки к верному ответу.


Зачем же все это может пригодиться геймдизайнеру?
Вот к примеру, делал я когда то игру про покер (вот эту >>)
И там была такая штука, как ачивки. Обычная собственно вещь для игр. И были там ачивки связанные с тем, какую комбинацию соберет игрок. Пару, две пары и так далее, собственно до флеш-рояля.
А за ачивки надо было давать какую-то награду, в игре ни чего кроме фишек нету. Ну это вполне вариант давать в награду за ачивки игровые фишки. А сколько давать? Ну логично давать, пропорционально тому, насколько маловероятно собрать комбинацию. Маловероятно – значит сложно. Оки.
И стал я давать за пару, вообще что-то символическое. За какой-то флеш, чуть больше и т.д.
А за рояль-флеш очень много. сами знаете, что собрать его вероятность какая маленькая. А если учесть, что игрок разыгрывает не каждую раздачу до конца, то по факту будет еще меньше.
А что получилось по факту? А по факту вышло вот, что …
В первый день, в игре зарегистрировалось около 40 000+ пользователей. И достаточно значительная часть, не просто зарегестрировались, а начала играть. Одна раздача идет минуту.
И тут вопрос – а сколько времени ушло у них до первого рояль флеша?
Будем считать, что играют все пользователи. Причем т.к. за столом сидят 9 человек, то раздач играется 4400 в минуту.
Time = LN(1-need)/LN(1-ver) / time
ver = 0,0032320620556% – вероятность собрать флеш-рояль.
need = 99% – необходимая вероятность, которую считаем 100%.
time = 4400 – количество попыток в единицу времени.
Что получается?
Time = 32,38 минуты.
Т.е. кто-то из игроков гарантированно за 32 минуты соберет флеш-рояль. А еще через 32 минуты, его соберет еще один и так далее. Хотя видя вероятность, в 0,0032320620556% это казалось практически не возможным.

2 comments on “Теория вероятности и ковбой мальборо, часть 2

  1. Правильное дело ты затеял. Я сам давно хотел написать краткую шпаргалку по терверу и комбинаторике для начинающих геймдизайнеров, но все никак руки до блога не дойдут :) Проблема явно есть, так как даже очень талантливые ребята не очень дружат с математикой, а без нее много косяков при подсчете баланса допускают.

    У тебя там только небольшая опечатка в формуле: P’ = 1- (1-0,4)^ 13 = 41,18%
    0.4 – это 40% а не 4%, нужно еще один нолик дописать – 0.04

Leave a Reply