Форумы-->Проблемы с боями-->
Автор | Когда удача больше 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. А то сейчас админ возьмёт поправит, а потом опять ОИФ слезами затопят. | Привет, ушастые! :)
Привет, Алекс.
Раз в прошлой зеркальной теме пошли навстречу пожеланиям и "улучшили" механику крита до заявленной, то было бы логично и здесь пойти навстречу пожеланиям игроков.
И красивое решение у нас есть.
"теперь для лака применяется расчет по алгоритму крита"
Т.е. счетчик лака сделаем "по стакану", единый на всю армию и невозможным выпадение двух лаков подряд.
Да здравствует, великий, идущий навстречу!
\\ушастые (чуть забаненные за правду) |
К списку тем
|