Абордаж. Продолжение.
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

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



 



Абордаж. Продолжение.

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

Количество: 2357
«<90919293949596979899100101102103104>»
Абордаж. Продолжение.
30.10.2013 22:36:17
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 eliseeff писал(а):
Результаты подсчета по формуле совпадают с твоими фактическими. Ошибка где-то у тебя.
 

Вот теперь все совпадает, да. Аллилуйа! :lol:

Переправил формулы на те, что в твоем последнем расчета. Поправь и ты, плиз, конечные формулы, я ж по ним писал модельку. В расчете A как минимум. И крайняя формула шанса тоже другая, вроде бы. Не похоже на преобразование.

PS: Округление при делении, кстати, влияет, но не сильно - в пределах десятых процента.

Редактировалось 1 раз (а). Последний раз 30.10.2013 22:56:13.

30.10.2013 22:59:17
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
 boojum писал(а):
Переправил формулы на те, что в твоем последнем расчета. Поправь и ты, плиз, конечные формулы, я ж по ним писал модельку. В расчете A как минимум. И крайняя формула шанса тоже другая, вроде бы. Не похоже на преобразование.
 

 Не понял, что поправить...

Я считал по своим формулам из этого поста. Ну, в одном месте при расчете S множители местами переставил - все равно ж один хрен... Верно там все...

А у тебя расчет по этим же формулам дает другие результаты. Значит, собака зарыта у тебя в вычислениях по этим формулам.

Upd: Может, я не совсем корректно поступил, дав переменной А одно и то же название в случаях, когда HullDefence < HullAttack и когда HullDefence > HullAttack. Ты мог просто не обратить внимание, что в разных случаях А считается по-разному.

Редактировалось 1 раз (а). Последний раз 30.10.2013 23:05:41.

30.10.2013 23:14:59
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 eliseeff писал(а):
 Не понял, что поправить...
 

Тьфу, прошу прощения, был невнимателен, условия не было вообще. :lol: Потому и ходило лесом. И сейчас бы ходило, в случае, если атака > защиты, так как я шило на мыло поменял.

Все, нашли козявку. В остальном, вроде бы все ок. Спасибо!
31.10.2013 00:04:41
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Тьфу! Когда модули исправлял на квадратные скобки, вместе с каментами случайно потер "минус единицу" в формулах HullAttack(max) и HullDefence(max). Хотя считал здесь при этом правильно. (Эти формулы просто гораздо выше и я их брал по памяти)

Поправил.
31.10.2013 00:40:03
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
Занятно влияет на шанс то, что "ничья" приписывается игроку. При условиях, когда возможен минимальный HullDefence (10)  - при абордаже TM без заморочек, и при суммарной механике 10, получаем аж 75% прорезки.
При максимально возможной "ничьи", когда сравниваются числа по 330 ("обычный" M1 с поляризатором или земной M7 с поляризатором и 165 механика с капсулы), получаем лишь 50.76%.
 Red_Eye писал(а):
Земной М1 без поляризатора и 180 единичных механиков в капсуле получат 50.69(4)%.
 
И правда.

Редактировалось 5 раз (а). Последний раз 31.10.2013 17:41:42.

31.10.2013 17:36:05
Red_Eye

Репутация: 1613
Сообщений: 1907
Регистрация: 12.06.2009
 boojum писал(а):
При максимально возможной "ничьи", когда сравниваются числа по 330 ("обычный" M1 с поляризатором или земной M7 с поляризатором и 165 механика с капсулы), получаем лишь 50.76%.
 

Земной М1 без поляризатора и 180 единичных механиков в капсуле получат 50.69(4)%.
01.11.2013 17:28:23
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Алгоритм расчета боя будет посложнее, чем прорезка корпуса и хак. И пытаться просчитать ВЕСЬ бой, пожалуй, будет слишком. Имеет смысл посчитать вероятности для боя на палубах и перед рубкой.



Начнем, пожалуй, с того, что нам понадобится посчитать вероятности того, что один из параметров (атака или защита) не только больше другого, но и больше на 40, на 150, на 400 и на 550. С этими вероятностями будут увеличиваться/уменьшаться количества потерь на палубах.


Исходя из класса, расы, наличия внутренних лазеров, суммарного навыка вражеского десанта и места боя (N-я палуба), считаем DefenceLevel.

 статья писал(а):
Для ксенонов:

 
DefenceLevel = BaseDefenceLevel × 2 + 85 × MaxMarines - 80 × <количество пройденных палуб>
 

  • Наличие на корабле внутренних сторожевых лазеров и вражеского десанта не учитывается.

Для землян и АОГ:

 
DefenceLevel = BaseDefenceLevel × 4 + <суммарный боевой уровень вражеских десантников>
 

  • При наличии на корабле внутренних сторожевых лазеров DefenceLevel увеличивается на 200.

Для всех остальных:

 
DefenceLevel = BaseDefenceLevel + <суммарный боевой уровень вражеских десантников>
 

  • При наличии на корабле внутренних сторожевых лазеров DefenceLevel увеличивается на 200.
 


Для боя перед рубкой формула у ксенонов и некоторые другие нюансы отличаются, но там и потери не считаются. Поэтому его считать нужно вообще отдельно. Сейчас займемся чисто палубным боем.



Теперь считаем AttackLevel - суммарный боевой навык атакующих десантников.

Высчитываем пределы изменений обоих параметров.


DefenceLevelmax = DefenceLevel + [0,1 * DefenceLevel] - 1
DefenceLevelmin = DefenceLevel - [0,1 * DefenceLevel]


AttackLevelmax = AttackLevel + [0.1 * AttackLevel] - 1
AttackLevelmin = AttackLevel - [0.1 * AttackLevel]


Но вот дальше идет загвоздка: раньше у нас была только линия "AttackLevel = DefenceLevel", а теперь линии другие и теперь их больше. Они идут под углом 45 градусов из нескольких точек на осях и обозначают результаты "AttackLevel = DefenceLevel + 40", "AttackLevel = DefenceLevel + 150", "AttackLevel = DefenceLevel - 40", "AttackLevel = DefenceLevel - 150" и т.д.

Мало того, отсекаться теперь может не только "равносторонний цифровой треугольник", а вполне себе возможны вот такие результаты:






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


И на этот раз я не вижу смысла в проверках, что и по какому алгоритму считать. Нужно делать универсальную формулу, через которую потом прогнать значения на предмет вероятностей разных разностей (неужели это я ТАКОЕ написал :lol:).


Итак, нас интересуют вероятности выпадения результатов, когда Защита превышает Атаку на:


более 550
от 401 до 550
от 151 до 400
от 41 до 150
от -40 до 40
от -150 до -41
от -400 до -151
от -550 до -401
менее -550


Назовем этот параметр Х. Соответственно, теперь нам нужен набор формул, последовательно подставляя в которые нужные нам значения Х, мы сможем высчитать вероятности таких превышений Защиты над Атакой.


Как быть?


Выход довольно прост. Будем перебирать последовательно все значения Х и перед подсчетом - проверять, проходит ли соответствующая линия по нашему прямоугольнику. Это довольно просто. Если (DefenceLevelmin - AttackLevelmax) =< Х < (DefenceLevelmax - AttackLevelmin), то линия наш прямоугольник пересекает. Если одно из этих условий не соблюдено - линия нас не интересует.


Хорошо. А как мы будем считать потом?






А почему нам сначала не посчитать большой треугольник, а потом вычесть из него два красных? И дело в шляпе. А если линий, пересекающихся с нашим прямоугольником не одна, а больше? Да, тоже довольно просто. Из каждого результата, кроме первого, надо вычитать предыдущий. Если предыдущая линия не пересекалась с прямоугольником - так и отнимем ноль. А если пересекалась - останется результат для участка МЕЖДУ линиями, что нам и нужно. Считать треугольники мы умеем. Надо только вычислить сторону (А) для каждого из них.


Сторона большого треугольника:

А1 = DefenceLevelmax - AttackLevelmin - X + 1


Стороны малых (красных) треугольников:

А2 = DefenceLevelmin - AttackLevelmin - X

А3 = DefenceLevelmax - AttackLevelmax - X

Обратите внимание на отсутствие приращения единицы при расчете сторон малых треугольников. На этот раз равенство показателей означает, что треугольников нет вообще.



Если сделать формулу правильно, то если красных треугольников физически нет, то они будут получаться нулевыми. Как это сделать? Тоже несложно. Нужно просто все отрицательные значения, полученные в результате вычисления сторон, сделать нулевыми. Делается это до одури легко: А = (А + |А|) / 2.



Ну, вот мы и готовы уже к созданию окончательного алгоритма. Будем считать, что мы уже посчитали показатели Атаки и Защиты и пределы их изменений:

DefenceLevelmax = DefenceLevel + [0,1 * DefenceLevel] - 1
DefenceLevelmin = DefenceLevel - [0,1 * DefenceLevel]


AttackLevelmax = AttackLevel + [0.1 * AttackLevel] - 1
AttackLevelmin = AttackLevel - [0.1 * AttackLevel]


И у нас есть значения Х(N)


NX
1550
2400
3150
440
5-40
6-150
7-400
8-550
9- ∞ *


* Не волнуйтесь. "Минус бесконечность" - это всего лишь то, что останется после отсечения по "минус пицод писят".


Тогда !

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

| DefenceLevel
|
|
|
|
|
|
|_____________________
                          AttackLevel

И еще мы будем использовать два значения: Расчет - это все результаты выше текущей линии, Результат - все результаты, лежащие выше текущей, но не выше предыдущей линии.




1. А1 = DefenceLevelmax - AttackLevelmin + 1 // в пп. 1- 6 мы задаем нужные нам переменные, которые будем потом использовать

2. А2 = DefenceLevelmin - AttackLevelmin

3. А3 = DefenceLevelmax - AttackLevelmax

4. MAX = DefenceLevelmax - AttackLevelmin

5. MIN = DefenceLevelmin - AttackLevelmax

6. S = (DefenceLevelmax - DefenceLevelmin + 1) * (AttackLevelmax - AttackLevelmin + 1)




7. N = 1 // начинаем цикл, задав значение счетчика

8. Если MIN > 550, то РасчетN = РезультатN = S, goto 28 // При этом условии весь прямоугольник лежит выше линии 550. Можно ничего не считать, а присвоить Расчету и Результату значения, равные площади. Данный кусок проходится только для первой линии, поэтому предыдущей быть не может. Идем считать Шанс.

9. Если MIN =< 550 < MAX, то goto 20 // В этом случае наш прямоугольник пересекается линией 550. Идем считать треугольники.

10. Если MAX =< 550, то РасчетN = РезультатN = 0, goto 28 // В принципе, условие можно было вообще выкинуть. Это просто все остальные случаи. Прямоугольник не высовывается за линию 550 и нам нечего считать. И Результат и Расчет равны нулю, отправляемся считать Шанс.





11. Если N < 9, то goto 16 // Если это не самый последний проход, идем смотреть, как проходит текущая линия по нашему прямоугольнику.

12. Если MAX < -550, то РасчетN = РезультатN = S, goto 15 // Если при последнем проходе весь прямоугольник лежит ниже линии -550 (у нас ведь нет X9), то последний Расчет и последний Результат равны площади всего прямоугольника. Идем считать последний Шанс и завершать работу.

13. Если MIN >= -550, то РасчетN = РезультатN = 0, goto 15 // Если при последнем проходе весь прямоугольник лежит не ниже линии -550, то Расчет и Результат оба нулевые. Идем считать последний Шанс и завершать алгоритм.

14. РасчетN = РезультатN = S - РасчетN - 1 // В остальных случаях последнего прохода ниже линии -550 лежит только часть прямоугольника. И последние Расчет с Результатом равны площади за вычетом предыдущего Результата.

15. ШансN = РезультатN / S, goto 30 // Считаем последний Шанс из последнего Результата и завершаем работу.






16. Если Х(N) >= MAX, то РасчетN = РезультатN = 0, goto 28 // Если весь прямоугольник не выше текущей линии, Расчет и Результат - нулевые. Идем считать Шанс и начинать следующий цикл.

17. Если MIN =< Х(N) < MAX, то goto 20 // Если текущая линия пересекает прямоугольник - идем считать треугольники.

18. Если Х(N-1) >= MAX, то РасчетN = РезультатN = S, goto 28 // В остальных случаях линия лежит ниже прямоугольника. Но вот если при этом он еще и не выступает за предыдущую линию, то текущий Результат - это вся площадь прямоугольника и мы идем считать Шанс и начинать следующий цикл...

19. Если Х(N-1) > MIN, то РасчетN = РезультатN = S - РасчетN-1, иначе РасчетN = РезультатN = 0 // ...а раз уж все-таки выступает, то Расчет и Результат равны площади прямоугольника за вычетом предыдущего результата, если только весь прямоугольник не остался выше предыдущей линии (тогда Расчет и Результат - нулевые).

  19,5. goto 28 Идем считать Шанс и продолжать.





20. A1N = A1 - XN

21. A2N = (A2 - XN + |A2 - XN|) / 2

22. A3N = (A3 - XN + |A3 - XN|) / 2

23. Тр1N = (А1N2 - A1N) / 2

24. Тр2N = (А2N2 - A2N) / 2

25. Тр3N = (А3N2 - A3N) / 2

26. РасчетN = Тр1N - Тр2N - Тр3N

27. Если N > 1, то РезультатN = РасчетN - РасчетN-1, иначе РезультатN = РасчетN // Здесь мы занимались тем, что считали наши треугольники, получая значение Расчет. А потом считали результат, вычитая из текущего значения Расчета предыдущее значение каждый раз, кроме самого первого.






28. ШансN = РезультатN / S // Считаем Шанс из Результата.

29. N = N + 1, goto 11 Приращиваем N и отправляемся обсчитывать следующую линию.



30. Конец.






По окончании этой процедуры у нас будет девять значений ШансN для N от 1 до 9. И соответствовать они будут шансам из Табл. 7 статьи toor'а:

AttackCasualtiesDefenceCasualtiesШанс такого варианта
550<DefenceLevel - AttackLevelAC × 30Шанс1
400<DefenceLevel - AttackLevel550AC × 3DC - 3Шанс2
150<DefenceLevel - AttackLevel400AC + (AC + 1) / 2DC - (DC + 1) / 2Шанс3
40<DefenceLevel - AttackLevel150AC + 1DC - 1Шанс4
-40DefenceLevel - AttackLevel40ACDCШанс5
-150DefenceLevel - AttackLevel<-40AC - 1DC + 1Шанс6
-400DefenceLevel - AttackLevel<-150AC - (AC + 1) / 2DC + (DC + 1) / 2Шанс7
-550DefenceLevel - AttackLevel<-400AC - 3DC × 2Шанс8
DefenceLevel - AttackLevel<-5500DC × 3Шанс9






Теперь вспомним о том, что еще до расчета вышеприведенных линеечек было еще такое: если (DefenceLevel - AttackLevel) ≤ 40, то с вероятностью 2% AttackCasualties будет увеличена на 1, а DefenceCasualties уменьшается на 1.

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


AttackCasualtiesDefenceCasualtiesШанс такого варианта
AC × 30Шанс1
AC × 3DC - 3Шанс2
AC + (AC + 1) / 2DC - (DC + 1) / 2Шанс3
AC + 1DC - 1Шанс4 + 0,02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)
ACDC0,98 * Шанс5
AC - 1DC + 10,98 * Шанс6
AC - (AC + 1) / 2DC + (DC + 1) / 20,98 * Шанс7
AC - 3DC × 20,98 * Шанс8
0DC × 30,98 * Шанс9

Продолжение следует.

Редактировалось 13 раз (а). Последний раз 06.11.2013 12:48:31.

03.11.2013 01:36:43
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Теперь попробуем посмотреть по классам кораблей, каким потерям десанта соответствуют высчитанные нами шансы.

Начнем, например, с вероятности гибели своих десантников при абордаже М1, М2 и TL.

Базовое значение AttackCasualties, как мы видим из табл. 6 трактата, лежит в диапазоне от 3 до 5. Значит, в одной трети случаев у нас будет АС = 3, в одной трети АС = 4, а еще в одной трети - АС = 5.

Что дальше? А дальше - довольно просто. С вероятностью Шанс1 все три этих варианта помножатся на три. Т.е. мы получим АС = 9, АС = 12 и АС = 15. Каждый из них - с вероятностью Шанс1 / 3.

С вероятностью Шанс2 они тоже умножаются на три. Так мы можем сложить вероятности одинаковых результатов. Тогда у нас АС = 9, АС = 12 и АС = 15 будут иметь вероятность (Шанс1 + Шанс2) / 3.

С вероятностью Шанс3 потери составят АС + (АС + 1) / 2. Эх... Полтора землекопа, ёма! Но попугайское крылышко можно не считать, поэтому потери составят 5, 6 и 8. Вероятность каждого - Шанс3 / 3.

Шанс4. Соответственно, 4, 5 и 6. Вероятность каждого - Шанс4 / 3. Шестерку можно опять складывать, но, может, мы сразу табличку сбацаем? По ней будет видно одинаковые значения, вот мы сразу одинаковые и посчитаем.



Шанс1 / 391215
Шанс2 / 391215
Шанс3 / 3568
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3456
0,98 * Шанс5 / 3345
0,98 * Шанс6 / 3234
0,98 * Шанс7 / 3122
0,98 * Шанс8 / 3012
0,98 * Шанс9 / 3000
345


Табл. 1. Расчет потерь среди атакующих для М1 / М2 / TL.





А теперь сложим одинаковые цифры и сложим их вероятности. Получим вероятность количества потерь своих бойцов при абордаже М1 / М2 / TL.




Количество погибшихВероятность
15(Шанс1 + Шанс2) / 3
12(Шанс1 + Шанс2) / 3
9(Шанс1 + Шанс2) / 3
8Шанс3 / 3
6(Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
5(Шанс3 + Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
4Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
30,98 * (Шанс5 + Шанс6) / 3
20,98 * (Шанс6 + 2 * Шанс7 + Шанс8) / 3
10,98 * (Шанс7 + Шанс8) / 3
00,98 * (Шанс9 + Шанс8 / 3)


Табл. 2. Вероятности потерь среди атакующих для М1 / М2 / TL.




Очень хорошо. Теперь надо такие же таблицы сделать для других классов кораблей и мы сможем выдавать результаты вероятности гибели своих десантников для любого корабля. А потом еще сделать то же самое для всех классов кораблей по гибели вражеского десанта.



Шанс1 / 3369
Шанс2 / 3369
Шанс3 / 3235
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3234
0,98 * Шанс5 / 3123
0,98 * Шанс6 / 3012
0,98 * Шанс7 / 3011
0,98 * Шанс8 / 3000
0,98 * Шанс9 / 3000
123


Табл. 3. Расчет потерь среди атакующих для М6.



Не вижу смысла оставлять значения 8 и 9, поскольку в М6 помещается только 5 десантников. Поэтому 8 и 9 присовокупим к 6. А вот вшестером бой вести десантники таки могут, так что надо бы оставить.



Количество погибшихВероятность
62 * (Шанс1 + Шанс2) / 3
5Шанс3 / 3
4(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
3(Шанс1 + Шанс2 + Шанс3 + Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
2(Шанс3 + Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
10,98 * (Шанс5 + Шанс6 + 2 * Шанс7) / 3
00,98 * (Шанс8 + Шанс9 + (Шанс6 + Шанс7) / 3)


Табл. 4. Вероятности потерь среди атакующих для М6.





Шанс1 / 36912
Шанс2 / 36912
Шанс3 / 3356
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3345
0,98 * Шанс5 / 3234
0,98 * Шанс6 / 3123
0,98 * Шанс7 / 3112
0,98 * Шанс8 / 3001
0,98 * Шанс9 / 3000
234


Табл. 5. Расчет потерь среди атакующих для ТМ.



9 и 12 мы тоже присовокупляем к 6, по аналогии с М6. В ТМ тоже влезает 5 десов, но вести бой могут шестеро атакующих.


Количество погибшихВероятность
6Шанс1 + Шанс2 + Шанс3 / 3
5(Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
4(Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
3(Шанс3 + Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
20,98 * (Шанс5 + 2 * Шанс6 + Шанс7) / 3
10,98 * (Шанс6 + 2 * Шанс7 + Шанс8) / 3
00,98 * (2 * Шанс8 / 3 + Шанс9)


Табл. 6. Вероятности потерь среди атакующих для ТМ.






Шанс1 / 3121518
Шанс2 / 3121518
Шанс3 / 3689
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3567
0,98 * Шанс5 / 3456
0,98 * Шанс6 / 3345
0,98 * Шанс7 / 3223
0,98 * Шанс8 / 3123
0,98 * Шанс9 / 3000
456


Табл. 7. Расчет потерь среди атакующих для М7.




Количество погибшихВероятность
18(Шанс1 + Шанс2) / 3
15(Шанс1 + Шанс2) / 3
12(Шанс1 + Шанс2) / 3
9Шанс3 / 3
8Шанс3 / 3
7(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
6(Шанс3 + Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
5(Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
40,98 * (Шанс5 + Шанс6) / 3
30,98 * (Шанс6 + Шанс7 + Шанс8) / 3
20,98 * (2 * Шанс7 + Шанс8) / 3
10,98 * Шанс8 / 3
00,98 * Шанс9


Табл. 8. Вероятности потерь среди атакующих для М7.



Продолжение следует.

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

Редактировалось 4 раз (а). Последний раз 03.11.2013 16:05:33.

03.11.2013 19:10:30
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Теперь примемся за расчет вероятностей потерь среди обороняющихся. Что характерно, они во многом будут похожи на таблицы потерь среди атакующих, отзеркаленные по вертикали. Но есть нюансы. Поскольку базовые значения DefenceCasualties рассчитываются по слегка другой формуле (учитывающей, что атакующих может быть на одного больше), для ТМ и М6 они отличаются от AttackCasualties для этих классов. А еще для АС оба максимальных значения модификатора дают умножение на 3, а для DC один на 3, а другой - только на 2. Но мы все это сосчитаем и учтем.


Начнем опять с М1 / М2 / TL.


Шанс1 / 3000
Шанс2 / 3012
Шанс3 / 3122
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3234
0,98 * Шанс5 / 3345
0,98 * Шанс6 / 3456
0,98 * Шанс7 / 3568
0,98 * Шанс8 / 36810
0,98 * Шанс9 / 391215
345


Табл. 9. Расчет потерь среди защитников для М1 / М2 / TL.




Количество погибшихВероятность
150.98 * Шанс9 / 3
120.98 * Шанс9 / 3
100.98 * Шанс8 / 3
90.98 * Шанс9 / 3
80.98 * (Шанс7 + Шанс8) / 3
60.98 * (Шанс6 + Шанс7 + Шанс8) / 3
50.98 * (Шанс5 + Шанс6 + Шанс7) / 3
4(Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
3(Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
2(Шанс2 + 2 * Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
1(Шанс2 + Шанс3) / 3
0Шанс1 + Шанс2 / 3)


Табл. 10. Вероятности потерь среди обороняющихся для М1 / М2 / TL.




Шанс1 / 3000
Шанс2 / 3000
Шанс3 / 3001
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3001
0,98 * Шанс5 / 3012
0,98 * Шанс6 / 3123
0,98 * Шанс7 / 3023
0,98 * Шанс8 / 3024
0,98 * Шанс9 / 3036
012


Табл. 11. Расчет потерь среди защитников для М6.




Количество погибшихВероятность
60.98 * Шанс9 / 3
40.98 * Шанс8 / 3
30.98 * (Шанс6 + Шанс7 + Шанс9) / 3
20.98 * (Шанс5 + Шанс6 + Шанс7 + Шанс8) / 3
1(Шанс3 + Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
0Шанс1 + Шанс2 + (2 * Шанс3 + 2 * Шанс4 + 1,02 * Шанс5 + 0,04 * Шанс6 + 1,02 * Шанс7 + 1,02 * Шанс8 + 1,02 * Шанс9) / 3


Табл. 12. Вероятности потерь среди обороняющихся для М6.





Шанс1 / 3000
Шанс2 / 3000
Шанс3 / 3011
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3012
0,98 * Шанс5 / 3123
0,98 * Шанс6 / 3234
0,98 * Шанс7 / 3235
0,98 * Шанс8 / 3246
0,98 * Шанс9 / 3369
123


Табл. 13. Расчет потерь среди защитников для ТМ.




 
Количество погибшихВероятность
60.98 * (Шанс8 + 2 * Шанс9) / 3
50,98 * Шанс7 / 3
40.98 * (Шанс6 + Шанс8) / 3
30,98 * (Шанс5 + Шанс6 + Шанс7 + Шанс9) / 3
2(Шанс4 + Шанс5 + Шанс6 + Шанс7 + Шанс8 + 0,02 * Шанс9) / 3
1(2 * Шанс3 + Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
0Шанс1 + Шанс2 + (Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3


Табл. 14. Вероятности потерь среди обороняющихся для ТМ.





Шанс1 / 3000
Шанс2 / 3123
Шанс3 / 3223
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3345
0,98 * Шанс5 / 3456
0,98 * Шанс6 / 3567
0,98 * Шанс7 / 3689
0,98 * Шанс8 / 381012
0,98 * Шанс9 / 3121518
456


Табл. 15. Расчет потерь среди защитников для М7.




Количество погибшихВероятность
180.98 * Шанс9 / 3
150.98 * Шанс9 / 3
120.98 * (Шанс8+ Шанс9) / 3
100.98 * Шанс8 / 3
90.98 * Шанс7 / 3
80.98 * (Шанс7 + Шанс8) / 3
70.98 * Шанс6 / 3
60.98 * (Шанс5 + Шанс6 + Шанс7) / 3
5(Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
4(Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
3(Шанс2 + Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
2(Шанс2 + 2 * Шанс3) / 3
1Шанс2 / 3
0Шанс1


Табл. 16. Вероятности потерь среди обороняющихся для М7.

Редактировалось 4 раз (а). Последний раз 11.11.2013 14:32:41.

04.11.2013 01:59:17
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Перед тем, как приступить к бою перед рубкой, попробуем слегка поизвращаться с расчетом пороговых значений. Например, при известных данных DefenceLevel (включая расовый модификатор и прочие примочки), какой суммарный боевой навык нашего десанта является минимально необходимым для возможного прохода палубы без потерь, а какой - гарантирует нам отсутствие потерь на палубе с вероятностью 98% (два процента все равно будут с потерями, это гарантировано алгоритмом).

Что ж, попробуем. У нас есть рассчитанный уровень DefenceLevel, считаем его пределы:

DefenceLevelmax = DefenceLevel + [0.1 * DefenceLevel] - 1

DefenceLevelmin = DefenceLevel - [0.1 * DefenceLevel]



Начнем с минимально достаточного уровня для прохода без потерь. Этот уровень будет в первую очередь зависеть от класса корабля.

Для М6 вероятность нулевых потерь начинается с появления вероятности выпадения Шанс6, для М1 / М2 / TL и ТМ - Шанс8, а для М7 - только в случае Шанс9 (см. таблицы выше). Когда такие шансы перестают быть нулевыми? Очевидно, когда параметр MIN (равный (DefenceLevelmin - AttackLevelmax)) хотя бы на единицу меньше X, где Х для Шанс6 равен -40, для Шанс8 равен -400, а для Шанс9 равен -550.

При каких условиях мы этого достигаем?

(DefenceLevelmin - AttackLevelmax) = Х - 1

AttackLevelmax = DefenceLevelmin - Х + 1

Но нам нужен сам уровень атаки, при котором мы получим нужный нам AttackLevelmax.

И вот тут зарыта собака. Нам надо отнять не 10%. Отнять надо 1/11. Почему? А вот почему:

AttackLevelmax = AttackLevel + AttackLevel / 10

AttackLevelmax = 11 AttackLevel / 10

AttackLevel = 10 * AttackLevelmax / 11 = AttackLevelmax - AttackLevelmax / 11

Поэтому:


AttackLevel(min needed) = (DefenceLevelmin + X + 1) - (DefenceLevelmin + X + 1) / 11,

где Х = 40 для М6, Х = 400 для М1 / М2 / TL и ТМ и Х = 550 для М7. (Минусы я убрал для упрощения, изменив знак перед Х.)

Здесь зарыта еще одна собака. Где? А вот она: AttackLevelmax = AttackLevel + [AttackLevel / 10] - 1


Так что в окончательную формулу надо добавить эту единичку, которая вычитается при расчете AttackLevelmax:


 
AttackLevel(min needed) = DefenceLevelmin + X + 2 - [(DefenceLevelmin + X + 2) / 11]

где Х = 40 для М6, Х = 400 для М1 / М2 / TL и ТМ и Х = 550 для М7.
 





С уровнем, достаточным для гарантированного на 98% прохождения палубы без потерь, дело обстоит примерно аналогично, только на этот раз нам необходимо уже, чтобы минимальный уровень атаки гарантированно превосходил максимальный уровень защиты на нужную нам величину. Конкретно - на 400 для М6 и на 550 для всех остальных классов кораблей. Не буду тянуть резину. Все просто.

 
AttackLevel(guarranteed 98%) = DefenceLevelmax + X + [(DefenceLevelmax + X) / 9],

где Х = 400 для М6 и Х = 550 для всех остальных.
 






Продолжаем тему. Теперь рассмотрим механику. Поэтому первым делом высчитываем HullDefence в зависимости от расы, класса и наличия поляризатора, а потом - его мин. и макс. значения.

Какой суммарный навык двух механиков достаточен для гарантированной прорезки корпуса?

Для этого должно соблюдаться условие: HullAttackmin >= HullDefencemax

Вот и считаем:

 
HullAttack(guarranteed) = HullDefencemax + [HullDefencemax / 9]

Если [Используется аб. капсула] = TRUE, то HullAttack(guarranteed) = HullAttack(guarranteed) / 2

Если (HullAttack(guarranteed) - [HullAttack(guarranteed)]) > 0, то HullAttack(guarranteed) = [HullAttack(guarranteed)] +1
 




Теперь считаем минимальный уровень, с которого прорезка вообще возможна. Данный параметр на практике нужен не столько для того, чтобы пытаться с ним прорезаться, сколько для того, чтобы знать, что ниже этого уровня прорезаться невозможно в принципе. Здесь пляшем уже от минимального уровня защиты.


 
HullAttack(min needed) = HullDefencemin + 1 - [(HullDefencemin + 1) / 11]

Если [Используется аб. капсула] = TRUE, то HullAttack(min needed) = HullAttack(min needed) / 2

Если (HullAttack(min needed) - [HullAttack(min needed)]) > 0, то HullAttack(min needed) = [HullAttack(min needed)] +1
 





Переходим к взлому компьютера. Здесь не может быть ни гарантированной удачи, ни гарантированного провала. Таков уж алгоритм. Мы можем посчитать только уровни, достаточные для максимального и минимального шанса удачи. А в остальном принцип тот же, только в этот раз совсем все просто.

Считаем DefenceLevel(min) и DefenceLevel(max) для данного корабля с учетом всех примочек.

 
AttackLevel(guarranteed 95%) = DefenceLevel(max)

AttackLevel(min needed for > 2%) = DefenceLevel(min)
 

Редактировалось 7 раз (а). Последний раз 09.11.2013 17:45:36.

04.11.2013 17:12:55
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Ладно. Остался последний этап - расчет боя перед рубкой. Рассчитываем показатели защиты с учетом того, что для ксенонов формула изменилась в сравнении с той, что использовалась при расчете боя на палубах.

 статья писал(а):
Для ксенонов:

 
DefenceLevel = BaseDefenceLevel × 2 + 85 × MaxMarines - 50 × <количество палуб>
 

  • Наличие на корабле внутренних сторожевых лазеров и вражеского десанта по-прежнему не учитывается.

Для землян и АОГ:

 
DefenceLevel = BaseDefenceLevel × 4 + <суммарный боевой уровень вражеских десантников>
 

  • При наличии на корабле внутренних сторожевых лазеров DefenceLevel увеличивается на 200.

Для всех остальных:

 
DefenceLevel = BaseDefenceLevel + <суммарный боевой уровень вражеских десантников>
 

  • При наличии на корабле внутренних сторожевых лазеров DefenceLevel увеличивается на 200.
 




Снова считаем AttackLevel - суммарный боевой навык атакующих десантников (или берем уже сосчитанный ранее для палубного боя) и высчитываем пределы изменений обоих параметров (здесь они у нас "гуляют" вверх-вниз не на 10%, а на 6,66%).


DefenceLevelmax = DefenceLevel + [DefenceLevel / 15] - 1 /// 6,66% = 1 / 15
DefenceLevelmin = DefenceLevel - [DefenceLevel / 15]


AttackLevelmax = AttackLevel + [AttackLevel / 15] - 1
AttackLevelmin = AttackLevel - [AttackLevel / 15]


Ну а дальше начинаем быстренько считать. После заморочек с палубным боем здесь все совсем просто:



1. Если (AttackLevelmax - DefenceLevelmin) =< 0, то Шанс = 0, goto 11

2. Если (AttackLevelmin - DefenceLevelmax) > 0, то Шанс = 1, goto 11

3. А1 = DefenceLevelmax - AttackLevelmin + 1

4. А2 = (DefenceLevelmin - AttackLevelmin + |DefenceLevelmin - AttackLevelmin|) / 2

5. А3 = (DefenceLevelmax - AttackLevelmax + |DefenceLevelmax - AttackLevelmax|) / 2

6. S = (DefenceLevelmax - DefenceLevelmin + 1) * (AttackLevelmax - AttackLevelmin + 1)

7. Тр1 = (А12 - A1) / 2

8. Тр2 = (А22 - A2) / 2

9. Тр3 = (А32 - A3) / 2

10. Шанс = (Тр1 - Тр2 - Тр3) / S

11. Конец.



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



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


 
AttackLevel(min needed) = DefenceLevelmin + 2 - [(DefenceLevelmin + 2) / 16]


AttackLevel(guarranteed) = DefenceLevelmax + [DefenceLevelmax / 14]
 

Редактировалось 6 раз (а). Последний раз 09.11.2013 17:09:02.

05.11.2013 12:46:13
Prohozhiy

Репутация: 984
Сообщений: 864
Регистрация: 27.12.2011
 eliseeff писал(а):
 

Дим, не самые глупые люди придумали символьное обозначение переменных. Я, конечно, понимаю, что непосредственно обсуждающим нормально, но вот со стороны это читать не удобно.
______________________________________
Я к тому, что если, к примеру, AttackLevelmin присвоить Amin, то смысл останется, а вот количество символов, описывающих этот смысл - существенно уменьшится. Сейчас мне читать не удобно, т.к. на мой взгляд посты сильно перегружены. Вообще, неплохо бы отдельный файлег типа doc, который по желанию можно было бы скачать и распечатать.

 eliseeff писал(а):
И первым в этом списке буду я.
 

Интересно, что бы ты делал, если бы у тебя полезли четырехэтажные дроби?

Редактировалось 2 раз (а). Последний раз 05.11.2013 13:32:14.

05.11.2013 13:10:38
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
 Prohozhiy писал(а):
Дим, не самые глупые люди придумали символьное обозначение переменных. Я, конечно, понимаю, что непосредственно обсуждающим нормально, но вот со стороны это читать не удобно.
 

Ты не мог бы поконкретнее изложить?

Алгоритм достаточно непрост. Если есть конкретные вопросы, типа, "почему вот это считается вот так", "почему здесь минус а не плюс", "зачем здесь единица приплюсована, а здесь - нет" - спроси. Если же вопрос в том, почему переменную назвали "икс", а не "игрек", то вопрос сей к алгоритму никакого отношения не имеет и я не понимаю, в чем, собственно, претензия.

 Prohozhiy писал(а):
Я к тому, что если, к примеру, AttackLevelmin присвоить Amin, то смысл останется, а вот количество символов, описывающих этот смысл - существенно уменьшится. Сейчас мне читать не удобно, т.к. на мой взгляд посты сильно перегружены. Вообще, неплохо бы отдельный файлег типа doc, который по желанию можно было бы скачать и распечатать.
 

Поверь мне, что в этом случае обязательно найдется тот, кому как раз сокращение производных от уже заданных переменных доставит еще больше неудобств в восприятии. И первым в этом списке буду я.

 Prohozhiy писал(а):
Интересно, что бы ты делал, если бы у тебя полезли четырехэтажные дроби?
 

Упрощал бы их. Четырех- не было, но трехэтажные здесь уже когда-то были. Я их просто упростил.




Вообще, все эти изыски заняли весьма длительное время. И еще больше - приведение их к более понятному виду. И их можно привести к еще более наглядному и понятному, но времени на это понадобится еще раза в три больше. Желательно, с объяснением в аудитории с доской и мелом. Но увы и ах, во-первых, мне не платят за это денег. Поэтому надо как-то соблюдать баланс между получением от этого удовольствия и превращением этого, хотя бы на время, в смысл своей жизни. Так сказать, без фанатизма.

А во-вторых, изложенное здесь представит интерес лишь трем с половиной анонимусам. Поэтому я и не стал делать из этого материала статью. Если, к примеру, вот эта статья при интересе тех же трех с половиной анонимусов представляет собой практическую пользу в понимании игровой геометрии, то представленные мной алгоритмы к игре уже не имеют прямого отношения вообще. Они показывают, как надо сосчитать вероятность того, что в игре что-то сосчитается так или эдак. Это уже косвенное отношение к игре. А когда будет сделан калькулятор, который все это будет подсчитывать на лету - кому будет какое дело, КАК он это делает. Да хоть магией. И останутся вообще полтора землекопа человека, которым, как и мне, просто доставляет возиться с математическими задачками.

Редактировалось 5 раз (а). Последний раз 05.11.2013 14:16:04.

05.11.2013 23:51:59
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Взялся за еще одну задачку. Высчитать шанс успешной прорезки корпуса в том случае, если нам известен шанс прорезки каждой капсулы, но капсул не одна, а больше.

Например, для земного М2 с поляризатором шанс прорезаться всего 2,03%. Это очень мало. А нам совершенно необходимо, чтобы прорезались хотя бы две. Потому что шанс прохода палубы без потерь появляется только при суммарном бое выше 511. А палуб - пять. Т.е. при одной прорезавшейся капсуле на каждой палубе гарантированно кто-то погибнет. Так вот сколько у нас шансов, что прорежется две капсулы из четырех запущенных?

Поскрипел мозгами и вывел формулу для расчета шанса прорезки М капсул из N запущенных, при условии, что шанс прорезки каждой капсулы равен переменнойШанс.


Шанс(М из N) = N! * ШансM * (1 - Шанс)(N - М) / М! * (N - M)!,

      где: Шанс(М из N) - шанс успешной прорезки М капсул из N, начавших прорезку.

Примечание: расчетное значение дает вероятность прорезки именно М капсул, а не больше либо равно М.

P.S. Спасибо, Макс! Слажал я с множителем. Поторопился.

Редактировалось 1 раз (а). Последний раз 06.11.2013 01:36:11.

06.11.2013 00:32:23
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 eliseeff писал(а):
Поскрипел мозгами и вывел формулу для расчета шанса прорезки М капсул из N запущенных, при условии, что шанс прорезки каждой капсулы равен переменнойШанс.


Шанс(М из N) = (1 + М * (N - M)) * ШансM * (1 - Шанс)(N - М),

      где: Шанс(М из N) - шанс успешной прорезки М капсул из N, начавших прорезку.

Примечание: расчетное значение дает вероятность прорезки именно М капсул, а не больше либо равно М.
 

А еще есть Схема Бернулли 
10.11.2013 17:23:51
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
Материал статьи о механике абордажа и вышеизложенные в теме наработки были оформлены в виде калькулятора, доступного как веб-страница. Надеюсь, в дальнейшем возможно будет сделать его частью сайта x3tc.net, но пока что пришлось вывалить в другое место. Написано целиком на JS, поэтому можно при желании сохранить и использовать без необходимости подключения к интернету.

Ссылка: http://x3bc.do.am/index.html

Позволяет наглядно рассчитывать некоторые интересные моменты всех этапов абордажа в X3:TC.

Имеются небольшие расхождения вычисляемых значений с числами в таблицах трактата в пределах десятых процента, пока неизвестно, с чем это связано.
Не все идеи еще реализованы, продукт будет допиливаться по мере возможности.

Работает в большинстве современных браузеров кроме IE версии меньше чем 9.

Мультиязычен, можно при желании добавить дополнительную локализацию.

Поиск багов и рацпредложения всячески приветствуются.

Огромное спасибо Елисееву за помощь с формулами, Хренаксу за клевые картинки и всем тем, кто участвовал в создании статьи о механике абордажа.
10.11.2013 18:17:04
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
Есть предложение дополнить калькулятор кораблями из игры, начатой на старых версиях. Дело в том, что в древние времена у М6 было две палубы, у М7 - три, а у ТЛ - четыре. В каких-то патчах кол-во палуб было для них изменено. Но это изменение из числа тех, что требует начала новой игры. Поэтому у тех, кто начинал игру на старых версиях, сейчас корабли этих классов так и остались с прежним кол-вом палуб, независимо от того, какая версия игры у них сейчас.
10.11.2013 18:44:20
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 eliseeff писал(а):
Дело в том, что в древние времена у М6 было две палубы, у М7 - три, а у ТЛ - четыре. В каких-то патчах кол-во палуб было для них изменено.
 
Да вполне можно, по идее. Только такое изменение, увеличение на палубу у M6, M7, TL? И в каком именно патче? Может это не так важно в каком именно, но можно было бы селект с версией патча присобачить и константы менять.
10.11.2013 18:49:37
eliseeff

Репутация: 25259
Сообщений: 18270
Регистрация: 08.05.2009
 boojum писал(а):
Да вполне можно, по идее. Только такое изменение, увеличение на палубу у M6, M7, TL? И в каком именно патче? Может это не так важно в каком именно, но можно было бы селект с версией патча присобачить и константы менять.
 

У человека может сейчас быть версия 3.2. А на какой начинал, он может и не помнить. Мало того, я сейчас сам фиг помню, когда кол-во палуб меняли.

Сейчас буду бацать таблицы с шансами потерь по количествам. Начальные значения потерь изменятся. И если для М6 и ТЛ можно скопипастить другие таблицы из более ранних, то для М7 придется делать совсем новую.

P.S. Губу пришлось закатать обратно. Из шести требуемых таблиц скопипастить получится только одну. Остальные надо делать заново.










Шанс1 / 36912
Шанс2 / 36912
Шанс3 / 3356
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3345
0,98 * Шанс5 / 3234
0,98 * Шанс6 / 3123
0,98 * Шанс7 / 3112
0,98 * Шанс8 / 3001
0,98 * Шанс9 / 3000
234


Табл. 1. Расчет потерь среди атакующих для М6ст. обр.




Количество погибшихВероятность
6Шанс1 + Шанс2 + Шанс3 / 3
5(Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
4(Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
3(Шанс3 + Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
20,98 * (Шанс5 + 2 * Шанс6 + Шанс7) / 3
10,98 * (Шанс6 + 2 * Шанс7 + Шанс8) / 3
00,98 * (2 * Шанс8 / 3 + Шанс9)


Табл. 2. Вероятности потерь среди атакующих для М6ст. обр.









Шанс1 / 3121518
Шанс2 / 3121518
Шанс3 / 3689
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3567
0,98 * Шанс5 / 3456
0,98 * Шанс6 / 3345
0,98 * Шанс7 / 3223
0,98 * Шанс8 / 3123
0,98 * Шанс9 / 3000
456


Табл. 3. Расчет потерь среди атакующих для TLст. обр.




Количество погибшихВероятность
18(Шанс1 + Шанс2) / 3
15(Шанс1 + Шанс2) / 3
12(Шанс1 + Шанс2) / 3
9Шанс3 / 3
8Шанс3 / 3
7(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
6(Шанс3 + Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
5(Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
40,98 * (Шанс5 + Шанс6) / 3
30,98 * (Шанс6 + Шанс7 + Шанс8) / 3
20,98 * (2 * Шанс7 + Шанс8) / 3
10,98 * Шанс8 / 3
00,98 * Шанс9


Табл. 4. Вероятности потерь среди атакующих для TLст. обр.









Шанс1 / 3182124
Шанс2 / 3182124
Шанс3 / 391112
(Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3789
0,98 * Шанс5 / 3678
0,98 * Шанс6 / 3567
0,98 * Шанс7 / 3334
0,98 * Шанс8 / 3345
0,98 * Шанс9 / 3000
678


Табл. 5. Расчет потерь среди атакующих для M7ст. обр.




Количество погибшихВероятность
241(Шанс1 + Шанс2) / 3
21(Шанс1 + Шанс2) / 3
18(Шанс1 + Шанс2) / 3
12Шанс3 / 3
11Шанс3 / 3
9(Шанс3 + Шанс4 + 0.02 * (Шанс5 + Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
8(Шанс4 + Шанс5 + 0.02 * (Шанс6 + Шанс7 + Шанс8 + Шанс9)) / 3
7(Шанс4 + Шанс5 + Шанс6 + 0.02 * (Шанс7 + Шанс8 + Шанс9)) / 3
60,98 * (Шанс5 + Шанс6) / 3
50,98 * (Шанс6 + Шанс8) / 3
40,98 * (Шанс7 + Шанс8) / 3
30,98 * (2 * Шанс7 + Шанс8) / 3
00,98 * Шанс9


Табл. 6. Вероятности потерь среди атакующих для M7ст. обр.

Редактировалось 10 раз (а). Последний раз 11.11.2013 00:07:55.

10.11.2013 19:00:07
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 eliseeff писал(а):
Мало того, я сейчас сам фиг помню, когда кол-во палуб меняли.
 

Дык только такие изменения? Может еще что-то было с палубами? Чтоб варианты предоставить.

А мне, кстати, и пересчитывать ничего не надо Таблички здорово помогли осознать что собственно происходит, но этот классовый порог все равно по изначальным константам считается. Только количество палуб поменять перед расчетом. Может и здесь это как-то алгоритмизировать тоже? Там же принцип "найди первый нолик" или "первые три нолика подряд".
«<90919293949596979899100101102103104>»


Список игр