Очень много ко мне вопросов по математике:) А так как математику я люблю, я решил провести небольшую лекцию для любителей математики.
Дано: провинция в любом мире.
Задача: посчитать количество требуемых атак для убийства провинции при помощи катапульт, вторжений и кавалерийского прорыва.
Исходные предположения: Мы считаем именно удачные атаки, так как при неудачных атаках ничего не уничтожается, кроме войск. Для огня катапульт, как известно из основ игры процент уничтожения населения 1.5-2.5% населения. Для вторжения 1-1.6%. Для кав. прорыва 2-3%. Помимо этого есть коэффициенты, влияющие на уничтожение. Это погода (ОК, ВТ, КП), коэффициент силы (ВТ, КП), количество земли у атакующего (нельзя захватить больше максимума захвата для земли атакующего, ВТ, КП) и продолжительность войны (только в Свободном мире ОК, ВТ, КП). Итого, мы будем считать количество удачных атак для убийства провинций для сферической провинции в вакууме, т.е. когда все 4 коэффициента равны 1. Минимум для ОК равен 2 человека, а для ВТ и КП 1 акр.
Лирическое отступление: Коэффициент погоды и продолжительность войны легко внести в формулу, так как они обозначены. Если вы посчитали, что на убийство нужно 400 ходов, а коэффициент погоды равен 1.1, то вам нужно будет на 40 ходов меньше, т.е. 360. Тоже самое с продолжительностью войны. Что же касается коэффициента силы, то там сила атакующего скорее всего будет расти, а сила обороняющегося может ОЧЕНЬ сильно упасть, поэтому это заложить в формулу нереально. Просто старайтесь не атаковать сильно вниз кавой. При плохом коэффициенте вынос кавой может занимать более 600 атак, а вторжениями около 1000. Теперь немного коснусь земли у атакующего. В принципе, если у атакующего хотя бы 1000 акров, то формула будет не сильно отклонятся от реальности, так как вы достаточно быстро выйдите на сравнимые с целью акры. Поэтому если у вас земли мало, то рекомендуется сначала довести картографией землю до 1-2К акров, а уже потом кавой или вторами.
Теория: Естественно, при наличии рандома, точно подсчитать количество атак невозможно. Можно лишь приблизительно оценить. Какие возможны варианты подсчёта?
1 (правильный). Взять начальную атаку, взять рандомизатор и прогнать раз 100 через рандомизатор весь килл. Т.е. процесс выглядит так. Допустим у нас 1000 человек. Я запускаю рандом первый раз. Убили допустим 2.1%, т.е. 21 человек. Осталось 979. Запускаем ещё раз. Убили, допустим 1.9%, т.е. 18 человек. Осталось 961. И т.д., пока не доведём до нуля. И так раз 10-100. Потом берём среднее по всем атакам. Это будет близко к тому, что требуется.
2 (по которому считаю я). Мне поскольку лень заниматься такой хренью, я делаю проще. Я беру просто среднее для убийства. Для ОК это 2%. И считаю так, как будто каждую атаку убивает 2%. Мой метод как правило даёт оценку чуть выше, чем в реальности. Так сказать упражнение 1, для внимательных студентов. Почему такой метод даёт в среднем результаты выше, чем в реальности? Внимательным студентам обещаю бонус, правда я ещё не решил, чем его выдам:) Может код дам:) Или платины чутка. А может заклами пульну:)
3. Другие варианты мне неизвестны, но если кто поделиться в комментах, буду рад.
Практика (наконец-то, многие уже, наверно, и не рассчитывали на практику): Собственно формула очень простая, для тех, кто знает математику. Допустим изначально было x населения. Тогда после первой атаки станет x*0.98 населения. После второй x*(0.98)^2, после n-ой атаки будет x*(0.98)^n населения. Помним, что мы не можем потерять менее 2 человек, поэтому нас будет интересовать момент, когда x*0.02 < 2. Не сложными вычислениями приходим к тому, что это 100 человек. Итого, по 2% доводим до 100 человек и 50 атак по 2 человека. Как узнать, сколько атак до 100 человек по 2%? Пусть pop начальное количество человек, а x необходимые атаки. Тогда pop*(0.98)^x = 100, требуется посчитать x? Те, кто доучился до 10 класса хотя бы, знают, что x = log(100/pop)/log(0.98). Для нас естественно целая часть сверху от x:) Итак, финальная формула для атак катапультами будет: x = [log(100/pop)/log(0.98)] + 51
Упражнение 2: подсчитать количество атак ВТ и КП самим:)
[caption id="attachment_283" align="aligncenter" width="400" caption="Профессор Дюна"][/caption]
Небольшой бонус. Калькуляторы киллов:
8 комментариев к “Урок математики от профессора Дюны.”
вообщем если я правильно понял дюну, эта ситуция из-за того что 1,5*2,5<2*2
если Дюне не хватает этого объяснения я могу поразглагольствовать в аське или ирке=) а так дайте мне мою платину=)
Я тоже хотел калькуляторы киллов на уому поставить. Ты меня опередил(
Дюна, в твои вычисления похоже вкралась ошибка. Формула вторжений которую ты использовал Math.log(40/land)/Math.log(0.987))+41
Средний процент захвата земли при вторжения 1.3%. Меньше 1 акра земли захватывать нельзя. Но
41*0.013 = 0.533, а не 1)
Почему такой метод даёт в среднем результаты выше, чем в реальности?
Из за округления скорее всего.
Например — 999*0.987 = 986.013, но в рофе нет дробных чисел у акров.
По поводу формулы — да, ты прав. Поправил формулу.
По поводу округления — нет, не правильно. Подсчёт по первому методу даёт результат, который в среднем ближе, чем результат по второму методу. К тому же засчёт округления должно быть меньше атак, а не больше.
Не-не, не больше. Округление в игре. Допустим я атаковал вторжением провинцию у которой 999 акров. После первой атаки согласно формуле должно получиться 999*0.987=986.013.
Учитывая что в рофе дробных чисел нет — в игре 986.013 должно округлится. Предположим в меньшую сторону. Тогда это будет 986 акров. После двух атак разрыв вырастет еще больше. У провинции останется 973 акра, а согласно формуле будет 973.194831. Ну и тд)
Не отгад:) Округлиться в сторону 987. Насколько я знаю, берётся целая часть потерь. Ты можешь сделать симуляцию по первому способу по целой части снизу, целой части сверху и округлению (т.е. от 0 до 0.5 огруляется до 0, а от 0.5 до 1 округляется до 1).
Интересно посмотреть на цифры.
Оставить Ответ: