Oczekiwana liczba rzutów kostkami wymaga, aby suma była większa lub równa K?


9

6-stronna kostka jest rzutowana iteracyjnie. Jaka jest oczekiwana liczba rzutów wymagana do uzyskania sumy większej lub równej K?

Przed edycją

P(Sum>=1 in exactly 1 roll)=1
P(Sum>=2 in exactly 1 roll)=5/6
P(Sum>=2 in exactly 2 rolls)=1/6
P(Sum>=3 in exactly 1 roll)=5/6
P(Sum>=3 in exactly 2 rolls)=2/6
P(Sum>=3 in exactly 3 rolls)=1/36
P(Sum>=4 in exactly 1 roll)=3/6
P(Sum>=4 in exactly 2 rolls)=3/6
P(Sum>=4 in exactly 3 rolls)=2/36
P(Sum>=4 in exactly 4 rolls)=1/216

Po edycji

P(Sum>=1 in atleast 1 roll)=1
P(Sum>=2 in atleast 1 roll)=5/6
P(Sum>=2 in atleast 2 rolls)=1
P(Sum>=3 in atleast 1 roll)=4/6
P(Sum>=3 in atleast 2 rolls)=35/36
P(Sum>=3 in atleast 3 rolls)=1
P(Sum>=4 in atleast 1 roll)=3/6
P(Sum>=4 in atleast 2 rolls)=33/36
P(Sum>=4 in atleast 3 rolls)=212/216
P(Sum>=4 in atleast 4 rolls)=1

Nie jestem pewien, czy jest to poprawne przede wszystkim, ale myślę, że to prawdopodobieństwo wiąże się z oczekiwaną liczbą rzutów?

Ale nie wiem, jak postępować dalej. Czy zmierzam we właściwym kierunku?


Jak ? P.(S.2) w 2 rolkach)
Glen_b

@Glen_b Musisz uzyskać liczbę mniejszą niż 2 w pierwszym rzucie, który wynosi 1. Prawdopodobieństwo uzyskania 1 to 1/6, a drugi rzut może być dowolną liczbą. jeśli w pierwszym rzucie uzyskasz liczbę większą lub równą 2, to nie przejdziesz do drugiego rzutu.
Zwykły podejrzany

1
Ach, rozumiem co się dzieje. Nie opisujesz tego jako „P (S \ geq 2 w 2 rolkach)”; to wyrażenie oznacza, że ​​liczba rolek jest stała. To, czego chcesz, to „P (dokładnie 2 rzuty wymagane, aby uzyskać )” lub „P (co najmniej 2 rzuty wymagane, aby uzyskać )”. S.2)S.2)
Glen_b

@Glen_b Tak, to zamieszanie. Myślę, że P (dokładnie 2 rolki potrzebne do uzyskania S> 2). Wszystko, co ostatecznie chcę obliczyć, to oczekiwana liczba rzutów, aby osiągnąć sumę większą niż K?
Zwykły podejrzany

@Glen_b powinienem używać przynajmniej do tego celu? A jak obliczyć oczekiwaną liczbę rzutów dla większej sumy, takiej jak 10000?
Zwykły podejrzany

Odpowiedzi:


2

To jak dotąd tylko kilka pomysłów na inne, dokładniejsze podejście, oparte na tej samej obserwacji, co moja pierwsza odpowiedź. Z czasem przedłużę to ...

Po pierwsze, jakiś zapis. Niech będzie jakąś podaną, dodatnią (dużą) liczbą całkowitą. Chcemy rozkład , która jest minimalna liczba rzutów zwykłej kostki, aby uzyskać sumę co najmniej . Najpierw zdefiniujemy jako wynik rzutu kostką , a . Jeśli możemy znaleźć rozkład dla wszystkich wówczas możemy znaleźć rozkład za pomocą i jesteśmy gotowy.KNKXiiX(n)=X1++XnX(n)nN

P(Nn)=P(X1++XnK),

Teraz możliwe wartości dla to , a dla w tym zakresie, aby znaleźć prawdopodobieństwo , my trzeba znaleźć całkowitą liczbę sposobów na zapisanie jako sumy dokładnie liczb całkowitych, wszystkie w zakresie . Ale nazywa się to ograniczoną liczbą całkowitą, problemem dobrze zbadanym w kombinatorykach. Niektóre powiązane pytania dotyczące matematyki SE można znaleźć na stronie https://math.stackexchange.com/search?q=integer+compositionsX1++Xnn,n+1,n+2,,6nkP.(X1++Xn=k)kn1,2),,6

Poszukując i studiując literaturę kombinatoryczną, możemy uzyskać ciche, precyzyjne wyniki. Zajmę się tym, ale później ...


2

Istnieje prosta zamknięta formuła pod względem pierwiastków wielomianu stopnia 6.

W rzeczywistości trochę łatwiej jest rozważyć ogólną uczciwą kostkę d2 twarze oznaczone cyframi 1,2,,d.

Pozwolić ek być oczekiwaną liczbą rzutów potrzebnych do wyrównania lub przekroczenia k. Dla k0, mik=0. W przeciwnym razie oczekiwanie jest o jeden większe niż oczekiwanie liczby rolek, aby osiągnąć bezpośrednio poprzedzającą wartość, która byłaby wśród kd,kd+1,,k1, skąd

(1)ek=1+1d(ekd+ekd+1++ek1).

Ta liniowa relacja powtarzalności ma rozwiązanie w formie

(2)ek=2kd+1+i=1daiλik

gdzie λid złożone pierwiastki wielomianu

(3)Td1d(Td1+Td2++T+1).

Stałe aja można znaleźć, stosując rozwiązanie (2) do wartości k=(d1),(d2),,1,0 gdzie ek=0w każdym przypadku. Daje to zestawd równania liniowe w dstałe i ma unikalne rozwiązanie. To, że rozwiązanie działa, można wykazać, weryfikując jego powtarzalność(1) wykorzystując fakt, że każdy root spełnia (3):

1+1rejot=1remik-jot=1+1rejot=1re(2)(k-jot)re+1+ja=1rezajaλjak-jot)=2)kre+1+ja=1rezajaλjak-re[1re(1+λja++λjare-1)]=2)kre+1+ja=1rezajaλjak-reλjare=2)kre+1+ja=1rezajaλjak=mik.

To rozwiązanie w formie zamkniętej daje nam dobre sposoby na przybliżenie odpowiedzi i jej dokładną ocenę. (Dla małych do skromnych wartościk, bezpośrednie zastosowanie nawrotu jest skuteczną techniką obliczeniową.) Na przykład za pomocą re=6 możemy łatwo obliczyć

e1000000=285714.761905

Dla przybliżeń będzie unikalny największy root λ+=1 więc w końcu (dla wystarczająco dużych k) termin λ+k zdominuje d warunki w (2).Błąd zmniejszy się wykładniczo zgodnie z drugą najmniejszą normą pierwiastków. Kontynuując przykład zk=6, współczynnik λ+ jest a+=0.4761905 a następną najmniejszą normą jest 0.7302500. (Nawiasem mówiąc, drugi ai wydają się być bardzo blisko 1 pod względem wielkości.) W ten sposób możemy przybliżyć poprzednią wartość jako

e10000002×1066+1+0.4761905=285714.761905

z błędem w kolejności 0.730250010610314368.


Aby zademonstrować praktyczność tego rozwiązania, oto Rkod, który zwraca funkcję do ocenyek dla każdego k (w zakresie obliczeń zmiennoprzecinkowych podwójnej precyzji) i niezbyt dużych d (ugrzęźnie raz d100):

die <- function(d, mult=1, cnst=1, start=rep(0,d)) {
  # Create the companion matrix (its eigenvalues are the lambdas).
  X <- matrix(c(0,1,rep(0,d-1)),d,d+1)
  X[, d] <- mult/d
  lambda <- eigen(X[, 1:d], symmetric=FALSE, only.values=TRUE)$values

  # Find the coefficients that agree with the starting values.
  u <- 2*cnst/(d+1)
  a <- solve(t(outer(lambda, 1:d, `^`)), start - u*((1-d):0))

  # This function assumes the starting values are all real numbers.
  f <- Vectorize(function(i) Re(sum(a * lambda ^ (i+d))) + u*i)

  list(f=f, lambda=lambda, a=a, multiplier=mult, offset=cnst)
}

Jako przykład użycia oblicza tutaj oczekiwania k=1,2,,16:

round(die(6)$f(1:10), 3)

1.000 1.167 1.361 1.588 1.853 2.161 2.522 2.775 3,043 3,324 3,613 3,906 4,197 4,476 4,760 5,046

Obiekt, który zwraca, zawiera korzenie λi i ich mnożniki aido dalszej analizy. Pierwszym składnikiem tablicy mnożników jest współczynnik użytecznya+.

(Jeśli jesteś ciekaw, do czego diesłużą pozostałe parametry , uruchom die(2, 2, 0, c(1,0))$f(1:10)i sprawdź, czy rozpoznajesz wynik ;-). To uogólnienie pomogło w opracowaniu i przetestowaniu funkcji).


+1. Funkcja diedaje błąd dla mnie object 'phi' not found.
COOLSerdash

1
@COOL Dziękujemy za sprawdzenie. Sprawcą była w ostatniej chwili zmiana nazwy zmiennej (z phina a) w celu dopasowania do tekstu. Naprawiłem (i sprawdziłem) to.
whuber

1

ogólnie nie ma możliwości uzyskania dokładnej oczekiwanej liczby rzutów, ale dla K.

Niech N będzie zdarzeniem oczekiwanego toczenia, aby uzyskać sumę => K.

dla K = 1, E (N) = 1

dla K = 2 mi(N.)=(56+2)1)/(56+1)=1711

i tak dalej.

Na przykład ciężko będzie uzyskać E (N) dla dużego K. Na przykład dla K = 20 musisz się spodziewać (4 rolki, 20 rolek)

Twierdzenie o limicie centralnym przyniesie więcej korzyści z pewną pewnością. jak wiemy, występowanie rozkłada się równomiernie, dla dużych wartości K.

K.(S.um) faollows N.(3.5N.,35N.12)
(Normalna dystrybucja)

Teraz potrzebujesz „N”, aby uzyskać sumę przynajmniej K .... przekształcamy ją w standardowy rozkład normalny.

K.-3.5N.35N.12=Zα
gdzie α=1-doonfajaremindomi% Możesz uzyskać wartości Z z „Standardowych tabel normalnych” lub na przykład stądZ0,01=2,31,Z0,001=2,98

Znasz K, Z (przy każdym błędzie) ........ wtedy możesz uzyskać N = E (N) przy pewnym% ufności, rozwiązując równanie.


2
Jak obliczyłeś te prawdopodobieństwa? Jak doszedłeś do tego równania E (N)?
Zwykły podejrzany

@UsualSuspect P (Suma> = 2 w 1 rzucie) = 5/6 (wiesz) P (Suma> = 2 w 2 rzutach) = 1 (ponieważ musisz uzyskać sumę co najmniej 2 z 2 rzutów) i dla E (N ) ......... to tylko oczekiwany środek
Hemant Rupani

Przepraszam, nie wspominam. Nie jest to co najmniej dokładnie 2 rolki. Teraz zrozumiałem równanie E (N).
Zwykły podejrzany

@UsualSuspect ohh! przy okazji, jeśli potrzebujesz E (N) dla dowolnego konkretnego K, to mogę to zrobić :).
Hemant Rupani,

Potrzebuję k = 20 i k = 10000. Lepiej, jeśli wyjaśnisz mi, niż po prostu udzielę odpowiedzi.
Zwykły podejrzany

0

Podam jedną metodę, aby znaleźć przybliżone rozwiązanie. Najpierw pozwólXi być zmienną losową ”wynik rzutu i z kostkami "i pozwól N być liczbą rzutów niezbędną do osiągnięcia sumy przynajmniej k. Mamy to

P(Nn)=P(X1+X2++Xnk)
aby znaleźć rozkład N musimy znaleźć zwoje rozkładów Xi dla i=1,2,,n, dla wszystkich n. Zwoje te można znaleźć liczbowo, ale dla dużychnmoże to być dużo pracy, dlatego zamiast tego próbujemy przybliżyć przybliżoną funkcję rozkładu skumulowanego dla zwojów, stosując metody saddlepoint. Innym przykładem metod saddlepoint jest moja odpowiedź na Ogólną sumę losowych zmiennych Gamma

W przypadku dyskretnego zastosujemy aproksymację Luganniniego-Rice'a i podążymy za R Butlerem: „Przybliżenia Saddlepoint z aplikacjami”, strona 18 (druga korekta ciągłości). Po pierwsze potrzebujemy funkcji generowania momentuXi, który jest

M.(T.)=mimitXja=16(mit+mi2)t+mi3)t+mi4t+mi5t+mi6t)
Następnie funkcja generowania skumulowanego dla sumy n niezależne kości stają się
K.n(t)=nlosol(16ja=16mijat)
i potrzebujemy również pierwszych kilku pochodnych K., ale znajdziemy te symbolicznie używające R. Kod jest następujący:

 DD <- function(expr, name, order = 1) {
        if(order < 1) stop("'order' must be >= 1")
        if(order == 1) D(expr, name)
        else DD(D(expr, name), name, order - 1)
     }

make_cumgenfun  <-  function() {
    fun0  <-  function(n, t) n*log(mean(exp((1:6)*t)))
    fun1  <-  function(n, t) {}
    fun2  <-  function(n, t) {}
    fun3  <-  function(n, t) {}
    d1  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 1)
    d2  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 2)
    d3  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 3)
    body(fun1)  <-  d1
    body(fun2)  <-  d2
    body(fun3)  <-  d3
    return(list(fun0,  fun1,  fun2,  fun3))
}

Następnie musimy rozwiązać równanie saddlepoint.

Odbywa się to za pomocą następującego kodu:

funlist  <-  make_cumgenfun()

# To solve the saddlepoint equation for n,  k:
solve_speq  <-   function(n, k)  {# note that n+1 <= k <= 6n is needed
    Kd  <-  function(t) funlist[[2]](n, t)
    k  <-  k-0.5
    uniroot(function(s) Kd(s)-k,  lower=-100,  upper=1,  extendInt="upX")$root
}

Zauważ, że powyższy kod nie jest bardzo niezawodny, dla wartości kdaleko w żadnym ogonie dystrybucji nie będzie działać. Następnie trochę kodu do obliczenia funkcji prawdopodobieństwa ogona, w przybliżeniu, w przybliżeniu Luganiniego-Rice'a, według Butlera, strona 18 (druga korekta ciągłości):

Funkcja zwracania prawdopodobieństwa ogona:

#

Ghelp  <-  function(n, k) {
    stilde  <-  solve_speq(n, k)
    K  <-  function(t) funlist[[1]](n, t)
    Kd <-  function(t) funlist[[2]](n, t)
    Kdd <- function(t) funlist[[3]](n, t)
    Kddd <- function(t) funlist[[4]](n, t)
    w2tilde  <-  sign(stilde)*sqrt(2*(stilde*(k-0.5)-K(stilde)))  
    u2tilde  <-  2*sinh(stilde/2)*sqrt(Kdd(stilde))
    mu  <-  Kd(0)
    result  <- if (abs(mu-(k-0.5)) <= 0.001) 0.5-Kddd(0)/(6*sqrt(2*pi)*Kdd(0)^(3/2))  else
    1-pnorm(w2tilde)-dnorm(w2tilde)*(1/w2tilde - 1/u2tilde)
    return(result)
}
G  <- function(n, k) {
      fun  <- function(k) Ghelp(n, k)
      Vectorize(fun)(k)
  }

Następnie spróbujmy użyć tego do obliczenia tabeli rozkładu na podstawie formuły

P.(N.n)=P.(X1+X2)++Xnk)=1-P.(X1++Xnk+1)=1-sol(n,k+1)
gdzie sol to funkcja z powyższego kodu R.

Teraz odpowiedzmy na oryginalne pytanie za pomocą K.=20. Zatem minimalna liczba rolek wynosi 4, a maksymalna liczba rolek wynosi 20. Prawdopodobieństwo, że potrzeba 20 rolek, jest bardzo małe i można je obliczyć dokładnie ze wzoru dwumianowego, pozostawiam to czytelnikowi. (powyższe przybliżenie nie zadziałan=20).

Więc prawdopodobieństwo, że N.19 jest przybliżone przez

> 1-G(20, 21)
[1] 2.220446e-16

Prawdopodobieństwo, że N10 jest przybliżony przez:

> 1-G(10, 21)
[1] 0.002880649

I tak dalej. Korzystając z tego wszystkiego, możesz sam uzyskać przybliżenie oczekiwań. Powinno to być znacznie lepsze niż przybliżenia oparte na centralnym twierdzeniu o granicy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.