Я наткнулся на проблему сборщиков купонов и пытался выработать формулу для обобщения.
Если существует различных объектов, и вы хотите собрать как минимум копий каждого из их (где ), каково ожидание того, сколько случайных объектов вы должны купить? В нормальной задаче по сбору купонов и .k m m ≤ N m = N k = 1
В коллекции 12 разных фигур LEGO. Я хочу собрать 3 копии каждой из 10 (любых 10) фигур. Я могу купить их случайно по одному. Сколько я должен ожидать купить, прежде чем у меня есть 3 копии каждого из 10 из них?
Ответы:
Это не легко вычислить, но это можно сделать, если( м+кК) не слишком велик. (Это число учитывает возможные состояния, которые необходимо отслеживать при сборе купонов.)
Давайте начнем с симуляции, чтобы получить некоторый смысл ответа. Здесь я собрал цифры LEGO миллион раз. Черная линия на этом графике отслеживает частоты количества покупок, необходимых для сбора не менее трех из десяти различных цифр.
Серая полоса - это приблизительный двусторонний 95% доверительный интервал для каждого счета. Под всем этим находится красная кривая: это истинное значение.
Чтобы получить истинные значения, учитывайте положение дел во время сбора цифр, из которых существует возможных типов, и вы хотите собрать как минимум из различных типов. Единственная информация, которую вам нужно отслеживать, это то, сколько фигур вы не видели, сколько вы видели всего один раз, сколько вы видели дважды и сколько вы видели три или более раз. Мы можем удобно представить это как моном где - это связанные числа, индексы от до . В общем, мы будем использовать мономы видаk = 3 m = 10 x i 0 0 x i 1 1 x i 2 2 x i 3 3 i j k = 0 k = t ∏ k j = 0 x i j jn = 12 к = 3 м = 10 Икся00Икся11Икся22Икся33 яJ к = 0 к = т ΠКJ = 0ИксяJJ .
После сбора нового случайного объекта это будет один из невидимых объектов с вероятностью , один из объектов, видимых только один раз с вероятностью , и так далее. Результат может быть выражен в виде линейной комбинации мономов,я0 я0/ н я1/ н
Это результат применения линейного дифференциального оператора к моному. Очевидно, что повторные обращения к начальному состоянию дадут многочлен , имеющий не более членов, где коэффициент - это шанс быть в состоянии, указанном его показателями. Нам просто нужно сосредоточиться на терминах в с : сумма их коэффициентов будет шансом завершить сбор купона. Таким образом, весь расчет требует до( х1DИкс0+ х2DИкс1+ х3DИкс2+ х3DИкс3) / n Икс120= хN0 п ( п+кК) ΠКJ = 0ИксяJJ п я3≥ т ( м + 1 ) ( н + кК) простые вычисления на каждом этапе, повторяемые столько раз, сколько необходимо, чтобы быть почти уверенными в успешности сбора.
Такое выражение процесса позволяет использовать эффективность систем компьютерной алгебры. Вот, например, общее решение Mathematica для вычисления шансов до розыгрышей. Это исключает некоторые возможности, но их общие шансы меньше , что дает нам почти полную картину распределения.6 n k = 216 10- 17
Результат, который занимает около двух секунд для вычисления (быстрее, чем симуляция!), Представляет собой массив вероятностей, проиндексированных по количеству ничьих. Вот график его различий, которые представляют собой вероятности завершения ваших покупок в зависимости от количества:
Именно эти цифры используются для рисования красной фоновой кривой на первом рисунке. (Тест хи-квадрат показывает, что симуляция существенно не отличается от этого вычисления.)
Мы можем оценить ожидаемое количество тиражей суммированием ; результат должен быть хорошим до 14-15 знаков после запятой. Я (что верно для каждой цифры, что определяется более длинными вычислениями).1 - д +50,7619549386733
источник