¿El número esperado de tiradas de dados requiere hacer una suma mayor o igual a K?

9

Un dado de 6 lados se tira de forma iterativa. ¿Cuál es el número esperado de lanzamientos requeridos para hacer una suma mayor o igual a K?

Antes de editar

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

Después de editar

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

No estoy seguro de que esto sea correcto en primer lugar, pero creo que esta probabilidad está relacionada con el número esperado de lanzamientos.

Pero no sé cómo seguir adelante. ¿Estoy avanzando en la dirección correcta?

Sospechoso habitual
fuente
¿Cómo obtuviste ? P(S2 in 2 rolls)
Glen_b -Reinstate a Mónica el
@Glen_b Tienes que obtener un número menor que 2 en el primer lanzamiento que es 1. Entonces, la probabilidad de obtener 1 es 1/6 y el segundo lanzamiento puede ser cualquier número. Si obtienes un número mayor o igual a 2 en el primer lanzamiento, entonces no irás por un segundo lanzamiento.
Sospechoso habitual el
1
Ah, ya veo lo que está pasando. No lo describe como "P (S \ geq 2 en 2 rollos)"; esa expresión implica que el número de rollos es fijo. Lo que desea es "P (se requieren exactamente 2 rollos para obtener )" o "P (se requieren al menos 2 rollos para obtener )". S 2S2S2
Glen_b -Reinstate a Monica el
@Glen_b Sí, esa es la confusión. P (se requieren exactamente 2 rollos para obtener S> 2), supongo. Todo lo que finalmente quiero calcular es el número esperado de tiradas para alcanzar una suma mayor que K?
Sospechoso habitual el
@Glen_b ¿Debo usar al menos o exactamente para este propósito? ¿Y cómo calcular el número esperado de rollos para una suma mayor como 10000?
Sospechoso habitual

Respuestas:

2

Hasta ahora, esto es solo algunas ideas para otro enfoque más exacto, basado en la misma observación que mi primera respuesta. Con el tiempo extenderé esto ...

Primero, alguna notación. Deje que sea ​​un número entero positivo (grande) dado. Queremos que la distribución de , que es el número mínimo de lanza de un dado común para obtener suma al menos . Entonces, primero definimos como el resultado del lanzamiento de dados , y . Si podemos encontrar la distribución de para todo entonces podemos encontrar la distribución de usando y estamos hecho.N K X i i X ( n ) = X 1 + + X n X ( n ) n N P ( N n ) = P ( X 1 + + X nK ) ,KNKXiiX(n)=X1++XnX(n)nN

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

Ahora, los valores posibles para son y para en ese rango, para encontrar la probabilidad , nosotros necesita encontrar el número total de formas de escribir como una suma de exactamente enteros, todos en el rango . Pero eso se llama composición entera restringida, un problema bien estudiado en combinatoria. Https://math.stackexchange.com/search?q=integer+compositions se encuentran algunas preguntas relacionadas sobre matemáticas SE. n , n + 1 , n + 2 , , 6 n k P ( X 1 + + X n = k ) k n 1 , 2 , , 6X1++Xnn,n+1,n+2,,6nkP(X1++Xn=k)kn1,2,,6

Entonces, buscando y estudiando esa literatura combinatoria podemos obtener resultados silenciosos y precisos. Seguiré con eso, pero luego ...

kjetil b halvorsen
fuente
2

Hay una fórmula cerrada simple en términos de las raíces de un polinomio de grado 6.

En realidad, es un poco más fácil considerar un dado justo general con d2 caras etiquetadas con los números 1,2,,d.

Sea ek el número esperado de rollos necesarios para igualar o exceder k. Para k0, ek=0. De lo contrario, la expectativa es uno más que la expectativa del número de rollos para alcanzar el valor inmediatamente anterior, que estaría entre kd,kd+1,,k1, donde

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

Esta relación de recurrencia lineal tiene una solución en la forma

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

donde λi son las raíces complejas d del polinomio

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

Las constantes ai se encuentran aplicando la solución (2) a los valores k=(d1),(d2),,1,0 donde ek=0 en todos los casos. Esto proporciona un conjunto de d ecuaciones lineales en las constantes d y tiene una solución única. Se puede demostrar que la solución funciona verificando la recurrencia (1)usando el hecho de que cada raíz satisface (3):

1+1dj=1dekj=1+1dj=1d(2(kj)d+1+i=1daiλikj)=2kd+1+i=1daiλikd[1d(1+λi++λid1)]=2kd+1+i=1daiλikdλid=2kd+1+i=1daiλik=ek.

Esta solución de forma cerrada nos brinda buenas formas de aproximar la respuesta, así como de evaluarla con precisión. (Para valores pequeños a modestos de k, la aplicación directa de la recurrencia es una técnica computacional efectiva). Por ejemplo, con d=6 podemos calcular fácilmente

e1000000=285714.761905

Para aproximaciones, habrá una raíz única más grande λ+=1 por lo que eventualmente (para k suficientemente grande ) el término λ+k dominará los términos d en (2).El error disminuirá exponencialmente según la segunda norma más pequeña de las raíces. Continuando con el ejemplo con k=6, el coeficiente de λ+ es a+=0.4761905 y la siguiente norma más pequeña es 0.7302500. (Por cierto, el otro ai tienden a ser muy cerca de1 en tamaño.) Así, podemos aproximar el valor anterior como

e10000002×1066+1+0.4761905=285714.761905

con un error del orden de 0.730250010610314368.


Para demostrar cuán práctica es esta solución, aquí hay un Rcódigo que devuelve una función para evaluar ek para cualquier k (dentro del alcance de los cálculos de coma flotante de precisión doble) y no demasiado grande d (se empantanará una vez 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)
}

Como ejemplo de su uso, aquí calcula las expectativas para 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

λiaia+.

(Si tiene curiosidad por cuáles son los otros parámetros die, ejecute die(2, 2, 0, c(1,0))$f(1:10)y vea si reconoce la salida ;-). Esta generalización ayudó a desarrollar y probar la función).

whuber
fuente
+1. La función dieda un error para mí: object 'phi' not found.
COOLSerdash
1
@ COOL Gracias por revisar. Un cambio de último minuto del nombre de la variable (de phia a) para que coincida con el texto fue el culpable. Lo he arreglado (y comprobado).
whuber
1

no hay forma de obtener el número exacto esperado de rollos en general, pero para un K.

Deje que N sea el evento de una tirada esperada para obtener suma => K.

para K = 1, E (N) = 1

E(N)=(56+21)/(56+1)=1711

y así.

Será difícil obtener E (N) para K. grande, por ejemplo, para K = 20 tendrá que esperar de (4 rollos, 20 rollos)

K(Sum) follows N(3.5N,35N12)

K3.5N35N12=Zα
α=1confidenceZ0.01=2.31,Z0.001=2.98

Sabes K, Z (en cualquier error) ... entonces puedes obtener N = E (N) en un% de confianza resolviendo la ecuación.

Hemant Rupani
fuente
2
¿Cómo calculó esas probabilidades? ¿Cómo llegaste a esa ecuación E (N)?
Sospechoso habitual el
@UsualSuspect P (Suma> = 2 en 1 rollo) = 5/6 (ya sabes) P (Suma> = 2 en 2 rollos) = 1 (porque debes obtener la suma al menos 2 de 2 rollos) y para E (N ) ......... es solo una media esperada
Hemant Rupani
Lo siento, no lo menciono. No es al menos, exactamente 2 rollos. Entendí la ecuación E (N) ahora.
Sospechoso habitual el
@UsualSuspect ohh! por cierto, si necesitas E (N) para cualquier K en particular, entonces puedo hacerlo :).
Hemant Rupani
Necesito k = 20 yk = 10000. Es mejor si me explicas en lugar de dar respuestas directamente.
Sospechoso habitual el
0

XiiNk

P(Nn)=P(X1+X2++Xnk)
NXii=1,2,,nnn

Xi

M(T)=EetXi=16(et+e2t+e3t+e4t+e5t+e6t)
n
Kn(t)=nlog(16i=16eit)
K

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

A continuación, debemos resolver la ecuación del punto de silla.

Eso se hace con el siguiente código:

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
}

k

Función para devolver la probabilidad de cola:

# #

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

P(Nn)=P(X1+X2++Xnk)=1P(X1++Xnk+1)=1G(n,k+1)
G

K=20n=20

N19

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

N10

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

Y así. Usando todo esto, puede obtener una aproximación a la expectativa usted mismo. Esto debería ser mucho mejor que las aproximaciones basadas en el teorema del límite central.

kjetil b halvorsen
fuente