Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2015, 13:40   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию игровой АИ - расчёт шансов на положительный исход стычки

Как расчитать шансы если присутствует рандом и изменяющиеся модификаторы урона.

Например, такие героеподобные правила:
* один юнит наносит 0.1 единицы урона, т.е. 100 юнитов сносят 10 хитов.
* есть 10% шанс выполнить лишний удар.
* каждый стэк атакует по очереди.

Пример - два стэка(s1, s2) по 100 юнитов каждый.

Код:
0. действие    => результат.
1. s1 atack s2 => 100, 090;
2. s2 atack s1 => 091, 090;
3. s1 atack*2  => 091, 071.8;
По какой формуле считать шансы на победу? Помимо колхозной формулы, прокручиваем бой 1000 раз, и подсчитываем шансы.
the_deer_one вне форума Ответить с цитированием
Старый 06.10.2015, 13:54   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не знаю правильно ли так, но я бы считал следующим образом:
урон1=количество юнитов1 * единицу урона1;
урон_макс1 =урон1*1,1
урон2=количество юнитов2 * единицу урона2;
урон_макс2 =урон2*1,1
Если урон1>урон_макс2 - команда1 явно выиграет
Если урон2>урон_макс1 - команда2 явно выиграет
урон=(урон1+урон_макс1/2)-(урон2+урон_макс2/2)
Если урон>0 - скорее всего команда1 выиграет
Если урон<0 - скорее всего команда2 выиграет
Если урон=0 - силы примерно равны
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 06.10.2015, 14:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как вариант посчитать диапазон уронов.(хотя он не равносильный выйдет, но все же)
и от него смотреть?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.10.2015, 14:25   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Мне кажется, решение где-то в районе распределений и подсчета их интегралов=)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Третий положительный элемент поменять местами с максимальным PicniX Помощь студентам 0 27.12.2012 13:24
Получить исход картинки WennY JavaScript, Ajax 0 07.11.2011 22:02
наименьший положительный элемент sp.caster Visual C++ 1 07.05.2011 00:33
Удалить первый положительный элемент после максимального pavel42 Помощь студентам 3 25.05.2009 15:30
random уменшения шансов kobras Паскаль, Turbo Pascal, PascalABC.NET 3 23.02.2008 20:07