Как часто вам приходится бросать шестигранный кубик, чтобы получить каждое число хотя бы один раз?


41

Я только что сыграл в игру со своими детьми, которая сводится к следующему: кто бы ни бросил каждое число хотя бы один раз на шестистороннем кубике, выигрывает.

В конце концов я выиграл, а остальные закончили на 1-2 хода позже. Теперь мне интересно: какова ожидаемая продолжительность игры?

Я знаю , что математическое ожидание количества рулонов до вас ударил несколько специфичный n=1n16(56)n1=6.

Однако у меня есть два вопроса:

  1. Сколько раз вам приходится бросать шестигранный кубик, пока вы не получите каждое число хотя бы один раз?
  2. Каково ожидание максимального количества бросков из четырех независимых испытаний (т.е. с четырьмя игроками) ? [примечание: это максимум, а не минимум, потому что в их возрасте это больше о завершении, чем о том, чтобы добраться туда сначала для моих детей]

Я могу смоделировать результат, но мне интересно, как бы я рассчитал его аналитически.


Вот симуляция Монте-Карло в Matlab

mx=zeros(1000000,1);
for i=1:1000000,
   %# assume it's never going to take us >100 rolls
   r=randi(6,100,1);
   %# since R2013a, unique returns the first occurrence
   %# for earlier versions, take the minimum of x
   %# and subtract it from the total array length
   [~,x]=unique(r); 
   mx(i,1)=max(x);
end

%# make sure we haven't violated an assumption
assert(numel(x)==6)

%# find the expected value for the coupon collector problem
expectationForOneRun = mean(mx)

%# find the expected number of rolls as a maximum of four independent players
maxExpectationForFourRuns = mean( max( reshape( mx, 4, []), [], 1) )

expectationForOneRun =
   14.7014 (SEM 0.006)

maxExpectationForFourRuns =
   21.4815 (SEM 0.01)

11
Проблема с купонным купоном также видна - поиск в Google даст вам гораздо больше просмотров и больше информации. Также попробуйте поискать это здесь в stats.SE .
Glen_b

1
@Glen_b: Спасибо, я не знал это имя!
Джонас

1
@whuber: Я не уверен, что этот вопрос должен был быть закрыт. Он хочет, чтобы ожидаемое минимальное время попадания составило четыре испытания. Я как раз собирался исправить свой ответ для решения динамического программирования.
Нил Дж

2
@whuber: я отредактирую свой пост, чтобы уточнить
Jonas

3
Соответствующее сообщение по математике. SE: Распределение вероятностей в задаче
сбора купонов

Ответы:


22

Поскольку был запрошен «полностью аналитический подход», вот точное решение. Это также обеспечивает альтернативный подход к решению вопроса о вероятности нарисовать черный шар в наборе из черных и белых шаров со смешанными условиями замены .


Количество ходов в игре, Икс , может быть смоделировано как сумма шесть независимых реализаций геометрического (п) переменных с вероятностями пзнак равно1,5/6,4/6,3/6,2/6,1/6 , каждый из них сдвинут на 1 (потому что геометрическая переменная считает только броски, предшествующиеуспех, и мы должны также подсчитать количество бросков, на которых были достигнуты успехи). Вычисляя с геометрическим распределением, мы, следовательно, получим ответы, которые на 6 меньше, чем желаемые, и поэтому должны быть уверены, что добавим 6 обратно в конце.

Производящая функция вероятности (PGF) такой геометрической переменной с параметром п является

f(z,p)=p1(1p)z.

Следовательно, pgf для суммы этих шести переменных

g(z)=i=16f(z,i/6)=6z4(5 2z+5+10 3z+45 4z+4+5z+4+5).

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

Кумулятивная функция распределения (CDF) получается из частичных сумм g (в виде степенного ряда по z ), который составляет суммирование геометрических рядов, и определяется как

F(z)=6z4((1) 1z+4+(5) 2z+4(10) 3z+4+(10) 4z+4(5) 5z+4+(1) 6z+4).

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

Отсюда получаем ожидаемое количество ходов в игре (отвечая на первый вопрос) как

E(6+X)=6+i=1(1F(i))=14710.

CDF максимума из m независимых версий X равен F(z)m (и из этого мы, в принципе, можем ответить на любые вероятностные вопросы о максимуме, который нам нравится, например, какова его дисперсия, каков ее 99-й процентиль, и так далее). С мзнак равно4 мы получаем ожидание

6+i=1(1F(i)4)21.4820363.

(Значение представляет собой рациональную дробь, которая в сокращенной форме имеет знаменатель из 71 цифры.) Стандартное отклонение составляет 6.77108. Вот график функции вероятности массы максимума для четырех игроков (она уже смещена на 6 ):

фигура

Как и следовало ожидать, это положительно перекошен. Режим на 18 рулонов. Редко, когда последний, кто закончит, получит более 50 бросков (это около 0.3% ).


Этот метод решения был вдохновлен наблюдением, что суммы геометрических переменных представляют собой смеси (возможно, с отрицательными весами) геометрических переменных, имеющих одинаковые параметры. Аналогичное соотношение имеет место среди гамма-переменных (с различными параметрами скорости). Я прошу прощения за работу в Mathematica, но я уверен, что Matlab также может выполнить эти вычисления :-).
whuber

2
Это ответ, на который я надеялся. Большое спасибо! Я думаю, что я должен быть в состоянии рассчитать числовые результаты в Matlab :)
Jonas

How does f(z,p)=p1(1p)z relate to the probability mass distribution of the geometric distribution? Where does the product i=16f(z,i/6) come from? I get the meaning of F(z), but what is the meaning of g(z)?
Sextus Empiricus

1
I see now that f(z,p) is the probability generating function.
Sextus Empiricus

@MartijnWeterings Thank you--I believe that is the more accurate and conventional term. (You can tell I tend to think of the pmf and pgf as almost the same thing, due to a long habit of using generating functions.) I will change the terminology in this post.
whuber

13

ThePawn has the right idea to attack the problem with a recurrence relationship. Consider a Markov chain with states {0,,6} corresponding to the count of the number of distinct dice rolls that have happened. State 0 is the start state, and state 6 is the finish state. Then, the probability of transition from state i to itself is i6. The probability of transition from state i to state i+1 is 6i6. Therefore the hitting time of the finish state is

i=0566i=14.7

(6,6,6,6)j is the weighted average for each source state i of the expected hitting time Ti plus the time to go from i to j, weighted by pipij, the probability of arriving at state i and moving to j. You can discover the hitting times and probabilities by dynamic programming. It's not so hard since there is a traversal order to fill in the hitting times and probabilities. For example, for two die: first calculate T and p for (0,0), then for (1,0), then (1, 1), (2, 0), then (2, 1), etc.

In Python:

import numpy as np
import itertools as it
from tools.decorator import memoized  # A standard memoization decorator

SIDES = 6

@memoized
def get_t_and_p(state):
    if all(s == 0 for s in state):
        return 0, 1.0
    n = len(state)
    choices = [[s - 1, s] if s > 0 else [s]
               for s in state]
    ts = []
    ps = []
    for last_state in it.product(*choices):
        if last_state == state:
            continue
        last_t, last_p = get_t_and_p(tuple(sorted(last_state)))
        if last_p == 0.0:
            continue
        transition_p = 1.0
        stay_p = 1.0
        for ls, s in zip(last_state, state):
            if ls < s:
                transition_p *= (SIDES - ls) / SIDES
            else:
                transition_p *= ls / SIDES
            stay_p *= ls / SIDES
        if transition_p == 0.0:
            continue
        transition_time = 1 / (1 - stay_p)
        ts.append(last_t + transition_time)
        ps.append(last_p * transition_p / (1 - stay_p))
    if len(ts) == 0:
        return 0, 0.0
    t = np.average(ts, weights=ps)
    p = sum(ps)
    return t, p

print(get_t_and_p((SIDES,) * 4)[0])

1
You've missed the expected maximum number of rolls in four independent repititions of the game.
probabilityislogic

Ah, I just noticed that. I think you mean minimum, but yes.
Нил Дж

@NeilG: я на самом деле имею в виду максимум (см. Мой обновленный вопрос), хотя я предполагаю, что стратегия одинакова для мин и макс. Не могли бы вы рассказать о стратегии динамического программирования?
Джонас

@Jonas: updated for maximum. I have a lot of work, but I might be able to code this up for you later.
Neil G

2
@NeilG: Thanks. I had hoped to get a completely analytical approach, but the DP code is quite instructional as well.
Jonas

6

Quick and dirty Monte Carlo estimate in R of the length of a game for 1 player:

N = 1e5
sample_length = function(n) { # random game length
    x = numeric(0)
    while(length(unique(x)) < n) x[length(x)+1] = sample(1:n,1)
    return(length(x))
}
game_lengths = replicate(N, sample_length(6))

Results: μ^=14.684, σ^=6.24, so a 95% confidence interval for the mean is [14.645,14.722].

To determine the length of a four-player game, we can group the samples into fours and take the average minimum length over each group (you asked about the maximum, but I assume you meant the minimum since, the way I read it, the game ends when someone succeeds at getting all the numbers):

grouped_lengths = matrix(game_lengths, ncol=4)
min_lengths = apply(grouped_lengths, 1, min)

Results: μ^=9.44, σ^=2.26, so a 95% confidence interval for the mean is [9.411,9.468].


1
I arrived at a very similar result with a Matlab simulation, but I was curious about how I would solve this analytically. Also, since I play with my kids, they all want to finish the game, regardless of who wins, so I do want to ask about the maximum.
Jonas

5

How about a recursive relation with respect to the remaining number m of sides you have to obtain in order to win.

T1=6
Tm=1+6m6Tm+m6Tm1

Basically, the last relation is saying that the number of time to roll the m remaining different numbers is equal to 1 plus:

  • Tm if you roll the one of the 6m numbers already rolled (probability 6m6)
  • Tm1 if you roll one of the m remaining numbers (probability m6)

Numerical application of this relation gives 14.7.


Something seems wrong with this answer. Shouldn't it be a summation at the end? Ti=Ti1+66i+1.
Neil G

1
Yes sorry made a mistake, I am correcting it
ThePawn

I hope you don't mind that I added an answer. 14.7 is correct, but the recurrence relationship is still flawed…
Neil G

No problem, should have been careful the first time :). Your answer is great.
ThePawn

5

A simple and intuitive explanation to the first question:

You first need to roll any number. This is easy, it'll always take exactly 1 roll.

You then need to roll any number other than the first one. The chance of this happening is 56, so it'll take 65 (1.2) rolls on average.

You then need to roll any number other than the first two. The chance of this happening is 46, so it'll take 64 (1.5) rolls on average.

You then need to roll any number other than the first three. The chance of this happening is 36, so it'll take 63 (2) rolls on average.

And so on until we successfully complete our 6th roll:

66+65+64+63+62+61=14.7 rolls

This answer is similar to Neil G's answer, only, without the markov chain.


1

the probability density function (or discrete equivalent) for getting the next new number is:

f = sum( p * ( 1 - p )^( i - 1 ) , i = 1 .. inf )

where p is the probability per roll, 1 when no numbers have been rolled, 5/6 after 1, 4/6 .. down to 1/6 for the last number

the expected value, mu = sum( i * p * ( 1 - p )^( i - 1 ), i = 1 .. inf ) letting n = i - 1, and bringing p outside the summation,

mu = p * sum( ( n + 1 ) * ( 1 - p )^n, n = 0 .. inf )

mu = p * sum( n(1-p)^n, n = 0 .. inf ) + p * sum( (1-p)^n, n = 0 .. inf ) mu = p * (1-p) / (1-p-1)^2 + p * 1/ (1-(1-p))

mu = p * ( 1 - p ) / p^2 + p/p

mu = ( 1 - p ) / p + p/p

mu = ( 1 - p + p ) / p

mu = 1 / p

The sum of the expected values (mus) for ps of 1, 5/6, 4/6, 3/6, 2/6, and 1/6 is 14.7 as previously reported, but 1/p per required number is general regardless of die size

similarly, we can calculate the standard deviation analytically

sigma^2 = sum( ( i - mu )^2 * p * ( 1 - p )^( i - 1 ), i = 1 .. inf )

I will spare you the algebra here, but sigma^2 = (1-p)/p^2

In the case of 6, the sum of sigma^2 for each step is 38.99 for a standard deviation of about 6.24, again, as simulated


-4

Question 1 was:

How many times do you have to roll a six-sided dice until you get every number at least once?

Obviously, the correct answer must be 'infinite'.


6
That would answer the question 'to guarantee with absolute certainty to get every number at least once'. For the question that was asked, the answer is a random variable, the distribution of which can be well approximated.
Glen_b -Reinstate Monica
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.