Her sayıyı en az bir kere elde etmek için 6 taraflı kalıbı ne sıklıkta sıkmanız gerekir?


41

Ben sadece çocuklarımla temelde kaynayan bir oyun oynamıştım: kim her sayıyı en az bir kez 6 taraflı bir galibiyetle kazanırsa kazanır.

Sonunda kazandım ve diğerleri 1-2 tur sonra bitti. Şimdi merak ediyorum: Oyunun uzunluğunun beklentisi nedir?

Belirli bir sayıya kadar rulo sayısının beklentisinin .n=1n16(56)n1=6

Ancak iki sorum var:

  1. Her sayıyı en az bir kere bulana kadar, altı taraflı bir kalıbı kaç kere atmanız gerekir?
  2. Dört bağımsız deneme arasında (yani dört oyuncuyla), gereken maksimum rulo sayısının beklentisi nedir? [not: en az değil, en az değil, çünkü yaşlarında çocuklarım için önce oraya gitmekten daha çok bitirme hakkında]

Sonucu simüle edebilirim ama analitik olarak nasıl hesaplayacağımı merak ediyorum.


İşte Matlab'da bir Monte Carlo simülasyonu

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
Kupon koleksiyoncusu sorunu da görüyor - googling size daha fazla isabet ve daha fazla bilgi verecek. Ayrıca burada istatistik aramaya çalışın.SE .
Glen_b

1
@Glen_b: Teşekkürler, bu ismi bilmiyordum!
Jonas

1
@whuber: Bu sorunun kapatılması gerektiğinden emin değilim. Dört denemeden beklenen asgari vuruş zamanını istiyor. Dinamik programlama çözümü için cevabımı düzeltmek üzereydim.
Neil G,

2
@ whuber: Mesajımı netleştirmek için düzenleyeceğim
Jonas

Yanıtlar:


22

“Tamamen analitik bir yaklaşım” talep edildiğinden, işte tam bir çözüm. Ayrıca, Probability'deki sorunun karışık değiştirme koşullarına sahip bir dizi siyah beyaz topun içine siyah bir top çekilmesi için alternatif bir yaklaşım sunmaktadır .


Oyundaki hamlelerin sayısı, , Geometrik değişkenlerin olasılıklarla bağımsız gerçekleşmesinin toplamı olarak modellenebilir. her biri kaymıştır (çünkü bir geometrik değişken yalnızca bir başarıdan önce gelen ruloları sayar ve aynı zamanda üzerinde başarıların gözlendiği ruloları da saymalıyız). Bu nedenle geometrik dağılımla hesaplama yaparak, istenen cevaplardan daha az olan cevaplar elde edeceğiz ve bu nedenle sonunda geri eklemelisiniz .X(p)p=1,5/6,4/6,3/6,2/6,1/616 666

Olasılık üreten fonksiyon , örneğin bir bölgesinin (PGF) geometrik değişken parametresi ile olanp

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

Bu nedenle, bu altı değişkenin toplamı için pgf

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

(Ürün bu kapalı formda kısmi fraksiyonlar vasıtasıyla beş terime ayrılarak hesaplanabilir .)

Kümülatif dağılım fonksiyonu (CDF), geometrik serilerin toplanmasına karşılık gelen ( bir güç serisi olarak) kısmi toplamlarından elde edilir vegz

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

(Alternatif bir türetme göstermektedir bir formda bu ifade yazdım ile İnklüzyon Dışlama prensibi).

Bundan, oyunda beklenen hamle sayısını (ilk soruyu cevaplayarak) elde ederiz.

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

Olan azami oranda CDF bağımsız sürümleri ise (ve bundan biz prensip olarak, bu tür onun varyans ne kadar bizim gibi maksimum, hakkında herhangi bir olasılık soruları cevaplayabilir, onun 99 persentil nedir , ve bunun gibi). ile bir beklenti elde ederizmXF(z)mm=4

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

(Değer, azaltılmış formda 71 basamaklı bir paydaya sahip rasyonel bir .) Standart sapma Dört oyuncu için maksimum olasılık olasılık fonksiyonunun bir grafiği ( zaten tarafından değiştirilmiş ):6.77108.6

şekil

Bekleneceği gibi, olumlu çarpıktır. Mod ruloda. Son bitiren kişinin rulodan fazla sürmesi nadirdir (yaklaşık ).18500.3%


Bu çözüm yöntemi, geometrik değişkenlerin toplamının, aynı parametrelere sahip geometrik değişkenlerin karışımı (muhtemelen negatif ağırlıklarla) olduğu gözleminden esinlenmiştir. Benzer bir ilişki Gamma değişkenleri arasında da geçerlidir (farklı oran parametrelerle). Çalışmayı Mathematica'da yaptığım için özür dilerim , ama Matlab'ın bu hesaplamaları da yapabildiğinden eminim :-).
whuber

2
Beklediğim cevap bu. Çok teşekkür ederim! Matlab :) 'da sayısal sonuçları hesaplayabileceğimi düşünüyorum :)
Jonas

Nasıl geometrik dağılım olasılık dağılımı ile ilgilidir? Ürün nerede etmez geliyor? nin anlamını anlıyorum , ama nin anlamı nedir? 6 i = 1 f(z,i/6)F(z)g(z)f(z,p)=p1(1p)zi=16f(z,i/6)F(z)g(z)
Sextus Empiricus

1
Şimdi olasılık üretme işlevi olduğunu görüyorum . f(z,p)
Sextus Empiricus

@MartijnWeterings Teşekkürler - Bunun daha doğru ve geleneksel bir terim olduğuna inanıyorum. (Üreten işlevleri kullanma alışkanlığı nedeniyle pmf ve pgf'yi neredeyse aynı şey olarak düşünme eğiliminde olduğumu söyleyebilirsin.) Bu yazıdaki terminolojiyi değiştireceğim.
whuber

13

Rehin, nüks ilişkisi ile soruna saldırma hakkına sahiptir. farklı zar sayısına karşılık gelen durumlarını içeren bir Markov zinciri düşünün . Durum 0, başlangıç ​​durumudur ve durum 6, bitiş durumudur. Daha sonra, durumundan kendisine geçiş olasılığı . Durumdan geçiş olasılığı ifade etmek olduğunu . Bu nedenle bitiş durumunun isabet süresi {0,,6}ii6ii+16i6

i=0566i=14.7

En fazla dört deneme için, dörtlü durumları düşünün. Hedef durum için beklenen isabet süresini bulmak istiyorsunuz . Herhangi bir devlet beklenen isabet zaman her bir kaynak durumu için ağırlıklı ortalamasıdır beklenen isabet zaman artı zaman yolunun için ile ağırlıklı, , duruma gelmeden olasılığı ve hareketli(6,6,6,6)jiTiijpipijij. Dinamik programlama ile vuruş sürelerini ve olasılıklarını keşfedebilirsiniz. Çok zor değil çünkü isabet zamanlarını ve olasılıklarını doldurmak için bir geçiş emri var. Örneğin, iki kalıp için: önce (0,0), sonra (1,0), sonra (1, 1), (2, 0), sonra (2, 1), vb. İçin T ve p'yi hesaplayın.

Python'da:

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
Oyunun dört bağımsız tekrarında beklenen maksimum rulo sayısını kaçırdınız.
Olasılıksal

Ah, daha yeni farkettim. Bence asgari demek istiyorsun, ama evet.
Neil G

@NeilG: Stratejinin min. Ve max. Lütfen dinamik programlama stratejisi üzerinde ayrıntılı bilgi verebilir misiniz?
Jonas

@Jonas: maksimum için güncellendi. Çok işim var ama bunu daha sonra sizin için kodlayabilirim.
Neil G,

2
@NeilG: Teşekkürler. Tamamen analitik bir yaklaşım elde etmeyi umuyordum, ancak DP kodu da oldukça öğretici.
Jonas

6

Hızlı ve kirli Monte Carlo, 1 oyuncunun oyun uzunluğu R cinsinden tahmini:

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

Sonuçlar: , , yani ortalama için% 95 güven aralığı .μ^=14.684σ^=6.24[14.645,14.722]

Dört oyunculu bir oyunun uzunluğunu belirlemek için, numuneleri dörtlü olarak gruplandırabilir ve her bir grup için ortalama minimum uzunluğu alabiliriz (maksimum hakkında sormuştunuz, ancak bunu okuduğumdan beri asgari kastettiğinizi varsayıyorum. Birisi tüm sayıları elde etmeyi başardığında oyun biter):

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

Sonuçlar: , , yani ortalama için% 95 güven aralığı .μ^=9.44σ^=2.26[9.411,9.468]


1
Bir Matlab simülasyonuyla çok benzer bir sonuç elde ettim, ancak bunu analitik olarak nasıl çözeceğimi merak ediyordum. Ayrıca, çocuklarımla oynadığımdan beri, kim kazanırsa kazansın, oyunu bitirmek istiyorlar, bu yüzden en fazla sormak istiyorum.
Jonas

5

Kazanmak için elde etmeniz gereken kalan sayısı ile ilgili özyinelemeli bir ilişkiye ne dersiniz ?m

T1=6
Tm=1+6m6Tm+m6Tm1

Temel olarak, son ilişki, kalan sayısını farklı sayılarla yuvarlamanın zaman sayısının artı olduğunu söylüyor :m1

  • Tm , daha önce haddelenmiş sayısından birini alırsanız (olasılık )6m6m6
  • Tm1 , kalan sayısından birini alırsanız (olasılık )mm6

Bu ilişkinin sayısal uygulaması verir .14.7


Bu cevapta bir sorun var. Sonunda bir özet olmamalı mı? . Ti=Ti1+66i+1
Neil G

1
Evet üzgünüm bir hata yaptı, düzeltiyorum
ThePawn

Umarım bir cevap eklememe aldırmazsın. 14.7 doğru, ancak yinelenme ilişkisi hala kusurlu…
Neil G

Hiç sorun değil, ilk kez dikkatli olmalıydı :). Cevabınız harika.
Perşembe

5

İlk soruya basit ve sezgisel bir açıklama:

İlk önce herhangi bir numarayı döndürmeniz gerekir. Bu kolaydır, her zaman tam olarak 1 rulo alır.

Daha sonra ilki dışındaki herhangi bir sayıyı döndürmeniz gerekir. Bu olma olasılığı dır , bu yüzden ortalama (1.2) rulo alır.5665

Daha sonra ilk ikisinden başka herhangi bir sayıyı döndürmeniz gerekir. Bu olma şansı dır , bu yüzden ortalama (1.5) rulo alır.4664

Daha sonra, ilk üçten başka bir sayı atmanız gerekir. Bu olma şansı dır , bu yüzden ortalama (2) rulo alır.3663

Ve 6. ruloyu başarıyla tamamlayana kadar:

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

Bu cevap, Neil G'nin sadece markov zinciri olmayan cevabına benzer.


1

Bir sonraki yeni numarayı almak için olasılık yoğunluk fonksiyonu (veya ayrık eşdeğer):

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

p, yuvarlanma başına olasılık, 1, hiçbir sayı yuvarlanmadığında 1, 1, 4 / 6'dan sonra 5/6 .. son sayı için 1 / 6'ya kadar

beklenen değer, mu = sum (i * p * (1 - p) ^ (i - 1), i = 1 .. inf), n = i - 1'e izin vererek ve p'nin toplamın dışına çıkarılmasını,

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

mu = p * toplamı (n (1-p) ^ n, n = 0 .. inf) + p * toplam ((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

1, 5/6, 4/6, 3/6, 2/6 ve 1/6 ps için beklenen değerlerin (mus) toplamı, daha önce bildirildiği gibi 14.7'dir, ancak gereken sayı başına 1 / p geneldir. ölmek

Benzer şekilde, standart sapmayı analitik olarak hesaplayabiliriz.

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

Size cebiri boşaltacağım ama sigma ^ 2 = (1-p) / p ^ 2

6 durumunda, her adım için sigma ^ 2'nin toplamı, simüle edildiği gibi, yaklaşık 6.24'lük bir standart sapma için 38.99'dur.


-4

1. soru şuydu:

Her numarayı en az bir kere alana kadar kaç kez altı yüzlü bir zar atmanız gerekir?

Açıkçası, doğru cevap 'sonsuz' olmalıdır.


6
Bu, 'her numarayı en az bir kere elde etmeyi kesin olarak güvence altına almak' sorusuna cevap verecektir. Sorulan soru için cevap, dağılımı iyi bir şekilde tahmin edilebilen rastgele bir değişkendir.
Glen_b
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.