Это не легко вычислить, но это можно сделать, если ( м+кК) не слишком велик. (Это число учитывает возможные состояния, которые необходимо отслеживать при сборе купонов.)
Давайте начнем с симуляции, чтобы получить некоторый смысл ответа. Здесь я собрал цифры 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/ н
Икся00Икся11Икся22Икся33→ 1N( я0Икся0- 10Икся1+ 11Икся22Икся33+ ⋯ + я3Икся00Икся11Икся2- 12Икся33) .
Это результат применения линейного дифференциального оператора к моному. Очевидно, что повторные обращения к начальному состоянию дадут многочлен , имеющий не более членов, где коэффициент - это шанс быть в состоянии, указанном его показателями. Нам просто нужно сосредоточиться на терминах в с : сумма их коэффициентов будет шансом завершить сбор купона. Таким образом, весь расчет требует до( х1DИкс0+ х2DИкс1+ х3DИкс2+ х3DИкс3) / nИкс120= хN0п( п+кК)ΠКJ = 0ИксяJJпя3≥ т( м + 1 ) ( н + кК) простые вычисления на каждом этапе, повторяемые столько раз, сколько необходимо, чтобы быть почти уверенными в успешности сбора.
Такое выражение процесса позволяет использовать эффективность систем компьютерной алгебры. Вот, например, общее решение Mathematica для вычисления шансов до розыгрышей. Это исключает некоторые возможности, но их общие шансы меньше , что дает нам почти полную картину распределения.6 n k = 21610- 17
n = 12;
threshold = 10;
k = 3;
(* Draw one object randomly from an urn with `n` of them *)
draw[p_] :=
Expand[Sum[Subscript[x, i] D[#, Subscript[x, i - 1]], {i, 1, k}] +
Subscript[x, k] D[#, Subscript[x, k]] & @ p];
(* Find the chance that we have collected at least `k` each of `threshold` objects *)
f[p_] := Sum[
Coefficient[p, Subscript[x, k]^t] /.
Table[Subscript[x, i] -> 1, {i, 0, k - 1}], {t, threshold, n}]
(* Compute the chances for a long series of draws *)
q = f /@ NestList[draw[#]/n &, Subscript[x, 0]^n, 6 n k];
Результат, который занимает около двух секунд для вычисления (быстрее, чем симуляция!), Представляет собой массив вероятностей, проиндексированных по количеству ничьих. Вот график его различий, которые представляют собой вероятности завершения ваших покупок в зависимости от количества:
Именно эти цифры используются для рисования красной фоновой кривой на первом рисунке. (Тест хи-квадрат показывает, что симуляция существенно не отличается от этого вычисления.)
Мы можем оценить ожидаемое количество тиражей суммированием ; результат должен быть хорошим до 14-15 знаков после запятой. Я (что верно для каждой цифры, что определяется более длинными вычислениями).1 - д+50,7619549386733