Спасибо большое за отклик. Теперь отвечу на твоё сообщение.
mawile , конечно, прав. Без работы с практической статистикой не обойтись. Проблема в том что мы никак не можем узнать сколько именно коммонок и рарок в среднем падает из паков во-первых. А во-вторых у нас также нет официальных данных по пити-таймерам золотых карт, поэтому предельно доступно точно учесть их дроп можно тоже только на основе практической статистики.
Всё то, что ты написал, это, конечно, хорошо и имеет смысл, но только при наличии статистики. А я именно потому, что статистики не было, на основе изложенных правил решил пойти методом вычёркивания из списка. Изложу его ещё раз, он основан на опубликованных правилах выпадения карт:
Каждый набор содержит 5 карт минимально гарантированного качества: 4 обычные и 1 редкую. Но при этом они могут замениться случайным образом на эпические и легендарные (как правило, заменяются не более 1 или 2 карт). В игре есть так называемый «таймер жалости», гарантирующий выпадение эпической карты в каждом 10-м наборе одного выпуска и легендарной карты в каждом 40-м наборе одного выпуска. Но для первых 10 наборов выпуска есть и гарантия выпадения дополнительной легендарной карты. Таким образом, вскрыв 50 первых наборов одного выпуска, можно наверняка получить 5 эпических и 2 легендарные карты. С учётом ограничения на выпадение любых повторных карт, введённого с 26 марта 2020 г., мы имеем такую картину:
когда мы получаем карту любым способом, это учитывается игрой;
обычные карты выпадают последовательно, пока не будут в полном комплекте (2 экземпляра каждой карты);
редкие карты выпадают по тому же принципу, но в меньшей интенсивности;
для эпических и легендарных карт работают «таймеры жалости», но без повторов;
когда получение всех карт учтено, могут выпадать повторные;
золотые карты учитываются отдельно от не золотых (спасибо bySalamandra за уточнение, основанное на твите от разработчика Celestalon ).
Имея эти критерии можно подсчитать приблизительное количество наборов, необходимое для сборки полного выпуска. Вот формулы для подсчёта гарантированного получения всех карт каждого вида редкости:
Обычные: кол-во наборов = (кол-во карт * 2) / 4. Даст приблизительный результат, т. к. некоторое количество обычных карт случайным образом замещается другими (в том числе золотыми).
Редкие: кол-во наборов = (кол-во карт * 2). Тоже приблизительный результат по вышеуказанной причине.
Эпические: кол-во наборов = (кол-во карт * 2) * 10.
Легендарные: кол-во наборов = (кол-во карт * 40) - 30.
Действие “-30” в последней формуле для того, чтобы учесть гарантированную легу в первых 10 наборах выпуска.
Таким образом, я посчитал все карты выпуска как четыре списка. Два из них, для обычных и редких карт, уменьшаются последовательно, пока не исчерпаются полностью, а для эпических и легендарных по пититаймерам. Повторки падают после получения всех карт одной редкости, независимо от способа получения и их дальнейшей судьбы. И тут у меня возникла проблема.
У нас собраны все обычные и редкие карты, есть 16 эпических и 2 легендарные карты (с учётом 2 гарантированных легендарных карт в первых 50 наборах). Нужны ещё 20 эпических и 30 легендарных карт, а для них совместно – 54800 пыли (8000 на эпические и 48000 на легендарные). Для них надо 1400 наборов. Это очень много, но из них выпадут эпические и легендарные карты. Их, в свою очередь, тоже надо учесть. Мы получаем рекурсию:
Далее она расписана в первом посте, повторяться лишний раз не буду. Затем я вывел два возможных варианта дальнейших действий:
вычислить среднее арифметическое нужного количества наборов, взяв все варианты их количества в цепочке, получаем 371 шт.;
вручную пройти по цепочке и оценить, какого количества наборов и пыли примерно хватит для сборки оставшихся карт с учётом того, что карты нужной редкости продолжают выпадать. Для этого надо все карты из этих наборов перевести в пыль и сравнить с нужным её количеством, получаем наиболее оптимальное число 491 набор при дополнительных 49 эпических и 12 легендарных картах, а также 17200 пыли, что находится примерно между 8 и 9 шагами рекурсии.
Итоговый результат будет довольно большим, и для приблизительного получения более реалистичного (по среднему выпадению) можно его разделить на два и дополнительно прибавить от 1/4 до 1/3 от исходного числа.
Из этих подсчётов можно сделать такой вывод: чаще всего для сборки полного выпуска достаточно получить из наборов приблизительно 3/4 всех карт, а оставшуюся четверть можно собрать из пыли, получившейся от распыления лишних карт.
Там же, в первом посте, есть ссылка на таблицу excel с автоматическим расчётом количества наборов на основе вводимого количества карт и кое-какими смежными выкладками ( https://yadi.sk/i/tfId31SCpUFPBQ
). В этом и нужна твоя помощь, чтобы ты проверил этот метод и изложил своё мнение о нём. Можно ли его улучшить? Мне кажется, что можно, но я не знаю точно. как именно.
Кстати говоря, этот метод решает упомянутую тобой проблему чисто статистического учёта:
Не забываем учесть, что в первых десяти паках падает гарантированная лега. Я, кстати, не знаю с наскока как это запрограммировать. Это может оказаться сложной задачей.
Я для этого отнимаю от количества наборов, нужных для открытия легендарных карт, 30 штук.
Также прокомментирую твои другие замечания:
Если мы ставим себе целью моделирование сбора только обычной коллекции, то золотые лишние копии распыляем приоритетно.
Да, сбор обычной коллекции и является целью, на это я и ориентировался изначально.
Золотые копии коммонок распыляем безусловно (даже если у нас ещё нету ни одной такой незолотой коммонки), потому что за распыл золотой коммонки дают 50 пыли, а крафт обычной стоит 40. 10 пыли из “ниоткуда” немного ускорит сбор сета, а коммонка всё равно выпадет.
Все лишние копии распыляем виртуально. То есть не пылим их на самом деле, но ведём точный подсчёт пыли, в них содержащейся.
Золотые карты учитываются отдельно от не золотых (спасибо bySalamandra за уточнение, основанное на твите от разработчика Celestalon). Все незолотые мы получим в любом случае.
Можно очень сильно напортачить с условной вероятностью при программировании функции дропа карт. Тут коротко я не смогу пояснить, у меня для этого мозгов мало. Правильный результат даёт такая функция дропа карт из пака, которая вообще не учитывает ничего: ни предельно допустимое число копий карты в одном паке, ни предельно допустимое число коммонок в паке. То есть в моделируемых паках МОЖЕТ быть 5 одинаковых коммонок, например. В условиях новых правил дропа с этим надо детально разбираться при тестировании функции.
Как мне кажется, можно сделать так:
- Сначала высчитать общее количество наборов с учётом получающейся из них пыли;
- потом проверить каждый получившийся набор на соответствие правилам и исправить допущенные грубые ошибки (например, набор с одними обычными картами или набор из одних легендарных), принудительно заменив такие “аномальные” наборы наборами с 4 обычными и 1 редкой картой;
- проверить соответствие “имеющихся” карт необходимому количеству в выпуске и в случае избытка и/или недостатка скорректировать проверяемое количество согласно правилам;
- вновь проверить получившееся количество наборов и карт на достаточность до сборки полного выпуска (переведя всё в пыль и сравнив с количеством пыли, нужным для сборки всех карт с нуля);
- если наборов вновь много или мало, добавить “недостающие” или убрать “лишние”, придерживаясь правил;
- и наконец, когда точное количество наборов и их состав посчитаны, можно присвоить картам названия, следя, чтобы они повторялись не более двух раз (для легендарных повторов вовсе не должно быть).