Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
18:33
4187
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Проблемы с боями-->

АвторКогда удача больше 50%...
С давних времён перед герои Империи могли повышать статы неограниченно. Но для удачи и морали стоит жёсткое ограничение - 50%.

Недавно я нашёл способ получить вероятность удачи аж 56%. Это довольно просто, кстати. Нужно всего лишь взять 5 удачи и пойти в любой бой. :) Лишь бы бой закончился за 2 хода...

Напомню для тех, кто не знает, священная формула: luck^(1+[количество удачных срабатываний]-[количество несработавших моментов]*luck/(1-luck))

Баг состоит в том, что средняя вероятность срабатывания за бой больше, чем luck. Ненамного - всего около 1-4% чаще всего, но всё же больше. Неплохо иметь нахаляву 2.2 удачи вместо 2, да? :)

Я не знаю, как это исправить. Сам бы хотел найти красивое решение... Ничего особо плохого не будет, если оно останется так, как есть. Пишу просто, чтоб эта информация где-то была...

Эксперименты ниже.
0.5 я приписал для красоты, все изначальные выкладки были для вероятности срабатывания магзеркала - 0.2.

Как и заявлялась ранее, то, что средняя вероятность срабатывания при статистическом количестве опытов равна luck, можно легко проверить экспериментально. Пусть имеем магическое зеркало (ну или удачу/мораль 2 - не важно). Задаём шанс 0.2):

=================
<?
$chance = 0.2;
$iters = 100000;

$a = 0;
$b = 0;
for ($i=0; $i<$iters; $i++) {
    $p = pow($chance, 1+$a-$b*$chance/(1-$chance));
    if (rand() < $p) {
        $a++;
    } else {
        $b++;
    }
}
printf("%f\n", $a/$iters);
?>
=================

Важное примечание для тех, кто не может отличить скрипт от сервиса, имеет два универсальных ответа на все проблемы: "установите firefox", "почистите кеш"; пишет слово "linux" с тремя ошибками, но тем не менее каким-то чудом модерит такие сугубо технические разделы, как техподдержка. ТУТ ВИРУСОВ НЕТУ. :)

Итак, результаты равны... 0.200010. Прекрасно! Я полагаю, именно такой тест проводили все, кто сомневался в верности формулы. А зря...
Этот тест не учитывает одну мааааленькую особенность ГВД. Бои у нас к сожалению (ну или к счастью) очень редко длятся 100 тысяч ходов. Если не говорить о PvE, то число ходов обычно до 50, но решается всё в первые ходы.

Итак, возьмём первые 10 ходов боя и посмотрим, какая вероятность выпадения 2 удач тут:

=================
<?
$chance = 0.2;
$iters = 10000;
$moves = 10;

$sum = 0;
for ($i=0; $i<$iters; $i++) {
    $a = 0;
    $b = 0;
    for ($ii=0; $ii<$moves; $ii++) {
        $p = pow($chance, 1+$a-$b*$chance/(1-$chance));
        if (rand() < $p*getrandmax()) {
            $a++;
        } else {
            $b++;
        }
    }
    $sum += $a/$moves;
}
printf("%f\n", $sum/$iters);
?>
=================

Запускаем. И тут наша вероятность 20% почему-то превратилась в 22.2% (при моём запуске - 0.222552).

Это происходит потому, что заявленная вероятность сходится к 0.2 при бесконечном количестве испытаний. Она не равна 0.2, она сходится к этому числу сверху. Но в первые ходы она немного больше.
Красивый график во весь экран:
http://screens.jggt.co.cc/6b74dc9d.png

По оси абцисс имеем количество ходов, по оси ординат - вероятности при различных значениях удачи за заданное количество ходов.

Ну и напоследок немного математики. Пусть у нас есть 5 удачи...

1) Допустим, в первый ход удача сработала. Вероятность удачи на 2-м ходу:
0.5**(1+1-0*0.5/(1-0.5)) = 0.25

Мат. ожидание = 0.5*(1+0.25) = 0.75

2) Допустим, в первый ход удача не сработала. Вероятность на 2-м ходу:
0.5**(1+0-1*0.5/(1-0.5)) = 1

Мат. ожидание = 0.5*(0+1) = 1

Среднее за два хода = (0.5+0.625) / 2

Ассимметрия для случая 0.5 в том, что в случае, если удача работает в первый ход, во второй ход тоже есть вероятность срабатывания. А вот если удача в первый ход не работает, вероятности несрабатывания нету. Для других чисел посложнее, но идея та же.

Те же эльфы с 60% базового крита по новым формулам получат себе в первые 2 хода 66.5%... Привет, ушастые! :)
Поправка на 2 часа ночи:

Мат. ожидание = 0.5*(1+0.25) = 0.75
0.625

Мат. ожидание = 0.5*(0+1) = 1
0.5

Среднее за два хода = (0.5+0.625) / 2
равно 0.5625 - это заявленные 56%
Я знал, я знал!!:))
Только вот скорее всего это не баг, а фича. Но за информацию спасибо.
Да, Кочарин, маленькая просьба - ты в следующий раз не пихай ее сюда, а то это сейчас после Ночи Длинных Фиксов сюда вообще заходят. Обычно-то тут пишут, а не читают)
Вообще-то надо бы это всё в ОИФ в виде опроса хотят ли игроки чтоб осталось как есть или пусть каждый ход будет совершенно непредсказуемый рандом равный 10%*luck. А то сейчас админ возьмёт поправит, а потом опять ОИФ слезами затопят.
Привет, ушастые! :)

Привет, Алекс.

Раз в прошлой зеркальной теме пошли навстречу пожеланиям и "улучшили" механику крита до заявленной, то было бы логично и здесь пойти навстречу пожеланиям игроков.


И красивое решение у нас есть.

"теперь для лака применяется расчет по алгоритму крита"

Т.е. счетчик лака сделаем "по стакану", единый на всю армию и невозможным выпадение двух лаков подряд.

Да здравствует, великий, идущий навстречу!

\\ушастые (чуть забаненные за правду)
К списку тем
2007-2025, онлайн игры HeroesWM