Bạn có thường xuyên phải lăn một cái chết 6 mặt để có được mọi số ít nhất một lần không?


41

Tôi vừa mới chơi một trò chơi với những đứa trẻ của mình mà về cơ bản sôi nổi: bất cứ ai lăn số ít nhất một lần trên một cái chết 6 mặt đều thắng.

Cuối cùng tôi đã thắng, và những người khác đã hoàn thành 1-2 lượt sau đó. Bây giờ tôi đang tự hỏi: kỳ vọng về độ dài của trò chơi là gì?

Tôi biết rằng kỳ vọng về số lượng cuộn cho đến khi bạn đạt được một số cụ thể là .n=1n16(56)n1=6

Tuy nhiên, tôi có hai câu hỏi:

  1. Bao nhiêu lần bạn phải lăn một cái chết sáu mặt cho đến khi bạn nhận được mỗi số ít nhất một lần?
  2. Trong số bốn thử nghiệm độc lập (nghĩa là với bốn người chơi), kỳ vọng về số lượng cuộn tối đa cần thiết là bao nhiêu? [lưu ý: đó là tối đa, không phải tối thiểu, bởi vì ở tuổi của họ, nó hoàn thiện hơn là về việc đến đó trước tiên cho con tôi]

Tôi có thể mô phỏng kết quả, nhưng tôi tự hỏi làm thế nào tôi sẽ tính toán nó một cách phân tích.


Đây là một mô phỏng Monte Carlo trong 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
Vấn đề của người sưu tập Coupon cũng thấy - việc googling sẽ cung cấp cho bạn nhiều lượt truy cập hơn và nhiều thông tin hơn. Ngoài ra, hãy thử tìm kiếm ở đây tại stats.SE .
Glen_b

1
@Glen_b: Cảm ơn, tôi không biết tên đó!
Jonas

1
@whuber: Tôi không chắc câu hỏi này đã bị đóng. Anh ta muốn thời gian đánh tối thiểu dự kiến ​​của bốn thử nghiệm. Tôi chỉ định sửa câu trả lời cho giải pháp lập trình động.
Neil G

2
@whuber: Tôi sẽ chỉnh sửa bài đăng của mình để làm rõ
Jonas

Câu trả lời:


22

Bởi vì "phương pháp phân tích hoàn toàn" đã được yêu cầu, đây là một giải pháp chính xác. Nó cũng cung cấp một cách tiếp cận khác để giải quyết câu hỏi tại Xác suất để vẽ một quả bóng đen trong một tập hợp các quả bóng đen và trắng với các điều kiện thay thế hỗn hợp .


Số lần di chuyển trong trò chơi, , có thể được mô hình thành tổng của sáu lần thực hiện độc lập các biến hình học với xác suất , mỗi trong số chúng thay đổi (vì một biến hình học chỉ tính các cuộn trước một thành công và chúng ta cũng phải tính các cuộn mà các thành công được quan sát). Bằng cách tính toán với phân phối hình học, do đó chúng tôi sẽ có được câu trả lời ít hơn câu trả lời mong muốn và do đó phải chắc chắn thêm câu trả lời vào cuối.X(p)p=1,5/6,4/6,3/6,2/6,1/616 666

Hàm tạo xác suất (pgf) của biến hình học như vậy với tham số làp

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

Do đó, pgf cho tổng của sáu biến này là

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

(Sản phẩm có thể được tính ở dạng đóng này bằng cách tách nó thành năm thuật ngữ thông qua các phân số một phần.)

Hàm phân phối tích lũy (CDF) được lấy từ tổng một phần của (dưới dạng chuỗi lũy thừa tính bằng ), tương đương với chuỗi tổng hình học, và được đưa ra bởigz

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

(Tôi đã viết biểu thức này dưới dạng gợi ý một dẫn xuất thay thế thông qua Nguyên tắc loại trừ bao gồm.)

Từ đó, chúng tôi có được số lần di chuyển dự kiến ​​trong trò chơi (trả lời câu hỏi đầu tiên) là

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

CDF của tối đa phiên bản độc lập của là (và về nguyên tắc, chúng tôi có thể trả lời bất kỳ câu hỏi xác suất nào về mức tối đa chúng tôi thích, chẳng hạn như phương sai của nó là gì, tỷ lệ phần trăm thứ 99 của nó là bao nhiêu , v.v.) Với chúng ta có được kỳ vọng vềmXF(z)mm=4

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

(Giá trị là một phần hợp lý, ở dạng rút gọn, có mẫu số 71 chữ số.) Độ lệch chuẩn là Dưới đây là một âm mưu của hàm khối lượng xác suất tối đa cho bốn người chơi (nó đã được thay đổi bởi rồi):6.77108.6

Nhân vật

Như người ta mong đợi, nó bị lệch một cách tích cực. Chế độ là cuộn. Rất hiếm khi người cuối cùng hoàn thành sẽ mất hơn cuộn (khoảng ).18500.3%


Phương pháp giải pháp này được lấy cảm hứng từ việc quan sát rằng các tổng của các biến hình học là hỗn hợp (có thể có trọng số âm) của các biến hình học có cùng tham số. Một mối quan hệ tương tự giữ giữa các biến Gamma (với các tham số tỷ lệ khác nhau). Tôi xin lỗi vì đã thực hiện công việc trong Mathematica, nhưng tôi chắc chắn Matlab cũng có thể thực hiện các tính toán này :-).
whuber

2
Đây là câu trả lời tôi đã hy vọng. Cảm ơn rât nhiều! Tôi nghĩ rằng tôi sẽ có thể tính toán các kết quả số trong Matlab :)
Jonas

f(z,p)=p1(1p)zi=16f(z,i/6)F(z)g(z)

1
f(z,p)

@MartijnWeterings Cảm ơn bạn - Tôi tin rằng đó là thuật ngữ chính xác và thông thường hơn. (Bạn có thể nói rằng tôi có xu hướng nghĩ về pmf và pgf gần như giống nhau, do thói quen sử dụng các hàm tạo.) Tôi sẽ thay đổi thuật ngữ trong bài viết này.
whuber

13

{0,,6}ii6ii+16i6

i=0566i=14.7

(6,6,6,6)jiTiijpipijij. Bạn có thể khám phá thời gian nhấn và xác suất bằng lập trình động. Không quá khó vì có một trật tự truyền tải để điền vào thời gian và xác suất trúng. Ví dụ: đối với hai die: đầu tiên tính T và p cho (0,0), sau đó cho (1,0), sau đó (1, 1), (2, 0), sau đó (2, 1), v.v.

Trong 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
Bạn đã bỏ lỡ số lượng cuộn tối đa dự kiến ​​trong bốn lần lặp lại độc lập của trò chơi.
xác suất

Ah, tôi chỉ nhận thấy điều đó. Tôi nghĩ bạn có nghĩa là tối thiểu, nhưng có.
Neil G

@NeilG: Tôi thực sự có nghĩa là tối đa (xem câu hỏi được cập nhật của tôi), mặc dù tôi cho rằng chiến lược này giống nhau cho tối thiểu và tối đa. Bạn có thể vui lòng giải thích về chiến lược lập trình động?
Jonas

@Jonas: cập nhật tối đa. Tôi có rất nhiều công việc, nhưng tôi có thể viết mã này cho bạn sau.
Neil G

2
@NeilG: Cảm ơn. Tôi đã hy vọng có được một cách tiếp cận hoàn toàn phân tích, nhưng mã DP cũng khá hướng dẫn.
Jonas

6

Ước tính nhanh chóng và bẩn của Monte Carlo trong R độ dài của trò chơi cho 1 người chơi:

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))

μ^=14.684σ^=6.24[14.645,14.722]

Để xác định độ dài của trò chơi bốn người chơi, chúng tôi có thể nhóm các mẫu thành bốn và lấy độ dài tối thiểu trung bình trên mỗi nhóm (bạn hỏi về mức tối đa, nhưng tôi cho rằng bạn có nghĩa là tối thiểu kể từ khi tôi đọc nó, Trò chơi kết thúc khi ai đó thành công trong việc lấy tất cả các số):

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

μ^=9.44σ^=2.26[9.411,9.468]


1
Tôi đã đi đến một kết quả rất giống với mô phỏng Matlab, nhưng tôi tò mò về cách tôi sẽ giải quyết vấn đề này một cách phân tích. Ngoài ra, vì tôi chơi với các con tôi, tất cả chúng đều muốn kết thúc trò chơi, bất kể ai thắng, vì vậy tôi muốn hỏi về mức tối đa.
Jonas

5

m

T1=6
Tm=1+6m6Tm+m6Tm1

m1

  • Tm6m6m6
  • Tm1mm6

14.7


Ti=Ti1+66i+1

1
Có xin lỗi đã làm sai, tôi đang sửa nó
ThePawn

Tôi hy vọng bạn không bận tâm rằng tôi đã thêm một câu trả lời. 14.7 là chính xác, nhưng mối quan hệ tái phát vẫn còn thiếu sót
Neil G

Không có vấn đề, nên đã cẩn thận lần đầu tiên :). Câu trả lời của bạn rất hay.
ThePawn

5

Một lời giải thích đơn giản và trực quan cho câu hỏi đầu tiên:

Trước tiên bạn cần cuộn bất kỳ số nào. Điều này thật dễ dàng, nó sẽ luôn mất đúng 1 cuộn.

5665

4664

3663

Và như vậy cho đến khi chúng tôi hoàn thành thành công cuộn thứ 6 của mình:

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

Câu trả lời này tương tự như câu trả lời của Neil G, chỉ, không có chuỗi markov.


1

hàm mật độ xác suất (hoặc tương đương rời rạc) để lấy số mới tiếp theo là:

f = tổng (p * (1 - p) ^ (i - 1), i = 1 .. inf)

Trong đó p là xác suất trên mỗi cuộn, 1 khi không có số nào được cuộn, 5/6 sau 1, 4/6 .. xuống còn 1/6 cho số cuối cùng

giá trị mong đợi, mu = sum (i * p * (1 - p) ^ (i - 1), i = 1 .. inf) let n = i - 1 và đưa p ra ngoài phép tính tổng,

mu = p * tổng ((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

Tổng các giá trị dự kiến ​​(mus) cho ps 1, 5/6, 4/6, 3/6, 2/6 và 1/6 là 14,7 như báo cáo trước đây, nhưng 1 / p trên mỗi số bắt buộc là chung bất kể kích thước chết

tương tự, chúng ta có thể tính toán độ lệch chuẩn

sigma ^ 2 = tổng ((i - mu) ^ 2 * p * (1 - p) ^ (i - 1), i = 1 .. inf)

Tôi sẽ dành cho bạn đại số ở đây, nhưng sigma ^ 2 = (1-p) / p ^ 2

Trong trường hợp 6, tổng sigma ^ 2 cho mỗi bước là 38,99 cho độ lệch chuẩn là khoảng 6,24, một lần nữa, như được mô phỏng


-4

Câu hỏi 1 là:

Bao nhiêu lần bạn phải tung xúc xắc sáu mặt cho đến khi bạn nhận được mỗi số ít nhất một lần?

Rõ ràng, câu trả lời đúng phải là 'vô hạn'.


6
Điều đó sẽ trả lời câu hỏi "để đảm bảo chắc chắn tuyệt đối để có được mọi số ít nhất một lần". Đối với câu hỏi đã được hỏi, câu trả lời là một biến ngẫu nhiên, phân phối của nó có thể được xấp xỉ tốt.
Glen_b
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.