[ГАЙД] Как собирать коллекцию в Hearthstone

  1. Да, именно так. Просто пытаюсь решить для себя, сколько в новых условиях откладывать золота на аддон. Спасибо.
    2, 3. А, то есть заполнять надо не цифрами, а названием редкости, выделяя его жёлтым, если карта выпало золотой. Верно?
  2. Спасибо, поняла.
    Upd. Meh, форматирование шалит. Надеюсь, понятно на что я отвечала. :sweat:

Я пишу названия карт и выделяю их цветом редкости (для обычных оставляю чёрный).

Вот ссылка на мою статистику из Ульдума для более детального примера: https://yadi.sk/i/TlyxK4qBPu035A.

Лайков: 1

Вау. :money_mouth_face: Хорошо, механизм заполнения ясен. :ok_hand:
Ещё я вспомнила, что забыла спросить, что значит Маркеры получения особых карт. :unamused:

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

Лайков: 1

Не могу зайти в бнет. Очередь на 8 часов.

mawile, конечно, прав. Без работы с практической статистикой не обойтись. Проблема в том что мы никак не можем узнать сколько именно коммонок и рарок в среднем падает из паков во-первых. А во-вторых у нас также нет официальных данных по пити-таймерам золотых карт, поэтому предельно доступно точно учесть их дроп можно тоже только на основе практической статистики.

На старом форуме была тема, где три чела (включая меня) делали моделирование по сбору золотой и обычной коллекции для произвольного набора карт (набор определяется четырьмя числами - число коммонок, рарок, эпиков и лег). В качестве отправной точки моделирования мы брали практическую статистику вскрытия максимально большого количества паков (чем больше выборка, тем точнее результат).

Например, так (беру цифры из своих старых записей, они примерно правильные):
18234 паков было вскрыто
63728 коммонок выпало
19604 рарок
3819 эпиков
982 лег
1390 золотых коммонок
1299 золотых рарок
254 золотых эпиков
94 золотых лег

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

Не забываем также учесть следующие моменты:

  1. Если мы ставим себе целью моделирование сбора только обычной коллекции, то золотые лишние копии распыляем приоритетно.
  2. Золотые копии коммонок распыляем безусловно (даже если у нас ещё нету ни одной такой незолотой коммонки), потому что за распыл золотой коммонки дают 50 пыли, а крафт обычной стоит 40. 10 пыли из “ниоткуда” немного ускорит сбор сета, а коммонка всё равно выпадет.
  3. Все лишние копии распыляем виртуально. То есть не пылим их на самом деле, но ведём точный подсчёт пыли, в них содержащейся.
  4. Последним вскрытым паком станет тот, после которого запас пыли из предыдущего пункта окажется достаточным для докрафта 100% недостающих карт.
  5. Не забываем учесть, что в первых десяти паках падает гарантированная лега. Я, кстати, не знаю с наскока как это запрограммировать. Это может оказаться сложной задачей.
  6. Можно очень сильно напортачить с условной вероятностью при программировании функции дропа карт. Тут коротко я не смогу пояснить, у меня для этого мозгов мало. Правильный результат даёт такая функция дропа карт из пака, которая вообще не учивает ничего: ни предельно допустимое число копий карты в одном паке, ни предельно допустимое число коммонок в паке. То есть в моделируемых паках МОЖЕТ быть 5 одинаковых коммонок, например. В условиях новых правил дропа с этим надо детально разбираться при тестировании функции.

Ну а дальше просто:

  1. Собираем 100000 наборов.
  2. Каждый раз считаем число паков, которое потребовалось на 100% заполнение набора.
  3. Выбираем из 100000 самое максимальное число (нам дико не пёрло), самое минимальное (мы боги удачи) и среднее арифметическое (главное из всех).

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

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

2 лайка

Спасибо большое за отклик. Теперь отвечу на твоё сообщение.

mawile , конечно, прав. Без работы с практической статистикой не обойтись. Проблема в том что мы никак не можем узнать сколько именно коммонок и рарок в среднем падает из паков во-первых. А во-вторых у нас также нет официальных данных по пити-таймерам золотых карт, поэтому предельно доступно точно учесть их дроп можно тоже только на основе практической статистики.

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

Каждый набор содержит 5 карт минимально гарантированного качества: 4 обычные и 1 редкую. Но при этом они могут замениться случайным образом на эпические и легендарные (как правило, заменяются не более 1 или 2 карт). В игре есть так называемый «таймер жалости», гарантирующий выпадение эпической карты в каждом 10-м наборе одного выпуска и легендарной карты в каждом 40-м наборе одного выпуска. Но для первых 10 наборов выпуска есть и гарантия выпадения дополнительной легендарной карты. Таким образом, вскрыв 50 первых наборов одного выпуска, можно наверняка получить 5 эпических и 2 легендарные карты. С учётом ограничения на выпадение любых повторных карт, введённого с 26 марта 2020 г., мы имеем такую картину:

  1. когда мы получаем карту любым способом, это учитывается игрой;

  2. обычные карты выпадают последовательно, пока не будут в полном комплекте (2 экземпляра каждой карты);

  3. редкие карты выпадают по тому же принципу, но в меньшей интенсивности;

  4. для эпических и легендарных карт работают «таймеры жалости», но без повторов;

  5. когда получение всех карт учтено, могут выпадать повторные;

  6. золотые карты учитываются отдельно от не золотых (спасибо bySalamandra за уточнение, основанное на твите от разработчика Celestalon ).

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

Обычные: кол-во наборов = (кол-во карт * 2) / 4. Даст приблизительный результат, т. к. некоторое количество обычных карт случайным образом замещается другими (в том числе золотыми).

Редкие: кол-во наборов = (кол-во карт * 2). Тоже приблизительный результат по вышеуказанной причине.

Эпические: кол-во наборов = (кол-во карт * 2) * 10.

Легендарные: кол-во наборов = (кол-во карт * 40) - 30.

Действие “-30” в последней формуле для того, чтобы учесть гарантированную легу в первых 10 наборах выпуска.

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

У нас собраны все обычные и редкие карты, есть 16 эпических и 2 легендарные карты (с учётом 2 гарантированных легендарных карт в первых 50 наборах). Нужны ещё 20 эпических и 30 легендарных карт, а для них совместно – 54800 пыли (8000 на эпические и 48000 на легендарные). Для них надо 1400 наборов. Это очень много, но из них выпадут эпические и легендарные карты. Их, в свою очередь, тоже надо учесть. Мы получаем рекурсию:

Далее она расписана в первом посте, повторяться лишний раз не буду. Затем я вывел два возможных варианта дальнейших действий:

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

  2. вручную пройти по цепочке и оценить, какого количества наборов и пыли примерно хватит для сборки оставшихся карт с учётом того, что карты нужной редкости продолжают выпадать. Для этого надо все карты из этих наборов перевести в пыль и сравнить с нужным её количеством, получаем наиболее оптимальное число 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 одинаковых коммонок, например. В условиях новых правил дропа с этим надо детально разбираться при тестировании функции.

Как мне кажется, можно сделать так:

  1. Сначала высчитать общее количество наборов с учётом получающейся из них пыли;
  2. потом проверить каждый получившийся набор на соответствие правилам и исправить допущенные грубые ошибки (например, набор с одними обычными картами или набор из одних легендарных), принудительно заменив такие “аномальные” наборы наборами с 4 обычными и 1 редкой картой;
  3. проверить соответствие “имеющихся” карт необходимому количеству в выпуске и в случае избытка и/или недостатка скорректировать проверяемое количество согласно правилам;
  4. вновь проверить получившееся количество наборов и карт на достаточность до сборки полного выпуска (переведя всё в пыль и сравнив с количеством пыли, нужным для сборки всех карт с нуля);
  5. если наборов вновь много или мало, добавить “недостающие” или убрать “лишние”, придерживаясь правил;
  6. и наконец, когда точное количество наборов и их состав посчитаны, можно присвоить картам названия, следя, чтобы они повторялись не более двух раз (для легендарных повторов вовсе не должно быть).
Лайков: 1

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

  1. Надо программировать формулы на каждом шагу, это трудоёмко.
  2. Ты манипулируешь оценками сверху (то есть пити-таймерами), а потом очень грубо делишь пополам, что сильно снижает реальную точность.

Если бы делал я, то я бы отказался делать по твоему пути, потому что:

  1. Я потратил бы больше усилий на реализацию.
  2. Реализация оказалась бы очень громоздкой.
  3. Конечная достоверность (точность) полученных оценок была бы несколько низковатой, по всей видимости.

Поэтому лучше, имхо, написать полноценное моделирование и получить точность строго коррелирующую с исходной статистикой.

Одновременно мы получаем универсальный алгоритм, меняя всего 4 входящих цифры (число коммонок, рарок, эпиков и лег в наборе) в котором, мы сможем мгновенно выдавать среднее арифметическое нужного числа паков на 100% заполнение любого по составу набора.

Но это программирование, да. Экселя никак не хватит.

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

Лайков: 1

В том же экселе мне не составило труда сделать расчёты. Конечно, с одной стороны, они грубые, потому что основаны на наихудшем сценарии выпадения карт (строго по пититаймерам), но с другой - иной точной методики я не знаю; цифры пититаймеров и последовательное выпадение рарок и обычек в соответствии с новыми правилами - единственные исходные данные, на которые можно опираться. К тому же я нисколько не отрицаю низкую точность метода. Мне казалось, что добиться её невозможно, так как нельзя наверняка предсказать, что и как именно будет падать, поэтому я в первом посте порекомендовал полученный результат поделить пополам, а затем прибавить к нему от 1/4 до 1/3 от исходного числа. А сейчас уже будет релиз нового аддона, я открою купленные паки и пойму сам, годится ли мой метод на что-то или нет.

Папка со статистикой. Надеюсь, заполнила правильно.
https://yadi.sk/i/5EU4coRNbwUtuQ

А вот моя: https://yadi.sk/i/eH6jauz1VZmseg

На этом основании я делаю выводы:

а можно конкретнее, что ты имеешь в виду? тяжело оценивать коллекцию по списку паков. я так понял, ты у себя отметил 63 пак как пак, в котором собрались все рарки, но и Часовая Драконьей Пасти и Пленный наблюдатель и Натрезим в доспехах у тебя к этому моменту уже в 3 экземплярах.

3 экземпляра - 2 обычных, и 1 золотой. Золотой лишний.
На твоём примере:
Часовая Драконьей Пасти: 2 не золотые в 52-м и 63-м паке, золотая в 60.
Пленный наблюдатель: золотой в 44-м и не золотые в 56-м и 62-м.
Натрезим в доспехах: золотой в 33-м и не золотые в 21-м и 61-м.

Так что всё на самом деле нормально работает.

ну т.е. в 60 паке у тебя собрались все рарки по 2 копии, а к 63 паку допадали все простые рарки, которых было только по одной, из-за того что были золотые

CEH9, до тебя пытаются донести, что рарки у тебя собрались в 60 паке, а не в 63.
Edit:
Тьфу, опять опоздал.

Да, значит, они реально учитываются раздельно. И игра посчитала, что обычных недостаточно.

Если бы было так, как ты сказал, то с 61-го стали бы падать повторки рарок, а этого не произошло. Значит, учёт золотых и незолотых реально раздельный.

Нет, не значит.
Ладно я скопирую свой вопрос из другой темы (а чего ты только в трёх ответил?..)
: падали ли после сбора коллекции из условно всех карт одной редкости только те, у которых нет пары золотая/не золотая?
Проще всего проверить на примере коммонок.

здорово, я рад что это работает так :slight_smile:

2 лайка

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

А только в три темы я написал потому, что они все имели отношение к сбору статистики по выпадению карт. Флудить нельзя.

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

Лайков: 1