Супер! Особый респект за решение с площадями. Я что-то не додумался, п...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 49



 



Супер! Особый респект за решение с площадями. Я что-то не додумался, п...

Terran Conflict (X3TC) / Форум / Форум по игре X3 Terran Conflict (X3TC) / X3 Земной конфликт / Абордаж. Продолжение.

Абордаж. Продолжение.
(http://x3tc.net/x3_forum/?tid=1039)
Автор: boojum
(30.10.2013 20:59:29)

Супер! Особый респект за решение с площадями. Я что-то не додумался, пытался визуализировать с отрезками на линейке.

Проверял конечную формулу, прогоняя воспроизведенный алгоритм с рандомами по несколько миллионов раз для равномерного вычисления шанса. Фактические цифры могут различаются лишь сотыми долями процента в силу того, что статистически еще более ровное число получить показалось хлопотно. В случае с предыдущим случаем, расчетом шанса хака, все совпадало аналогично "на ура", поэтому считаю, что этот способ проверки формулы методом "прогона" можно считать правильным.

Результаты прогонов совпадают c твоей конечной формулой, кроме одной ситуации: когда HullAttack < HullDefence. Тогда получаются серьезные расхождения почему-то.

Например при HullAttack = 37 и HullDefence = 40 по формуле получаем 12.33%. А прогон алгоритма дает фактический шанс 20.8%
Или при HullAttack = 195 и HullDefence = 200 по формуле шанс 22.63%. По факту выдает 39.14%.

В случае же, когда HullAttack >= HullDefence, все ништяк.

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

Еще момент не понял:
 eliseeff писал(а):
HullDefence(min) = HullDefence - |0.1*HullDefence| // значение модуля числа, думаю, понятно
HullDefence(max) = HullDefence + |0.1*HullDefence| - 1 // аналогично
 
Какой смысл здесь имеет модуль? Параметры заведомо не могут быть меньше нуля.

 eliseeff писал(а):
То не модуль, а склероз целая часть числа.
 
Может имеет смысл чуть попроще, типа: HullDefence * 0.9 ? Туплю. Один хрен. Правильнее было бы воспроизвести как в алгоритме, конечно. Либо не затрагивать округления вообще

Хотя, ты прав, конечно - больше неявных округлений в этом куске быть не может. Делений кроме как аргумента на 10 не наблюдается.

дерево темы → Абордаж. Продолжение. Абордаж. Продолжение. »
Список игр