¿Cuál es el número esperado de veces que debes tirar un dado hasta que cada lado haya aparecido 3 veces?
Esta pregunta se hizo en la escuela primaria de Nueva Zelanda y se resolvió mediante simulaciones. ¿Cuál es la solución analítica para este problema?
Respuestas:
Supongamos que todos los ladosd=6 tienen las mismas posibilidades. Generalicemos y encontremos el número esperado de tiradas necesarias hasta que el lado 1 haya aparecido n1 veces, el lado 2 haya aparecido n2 veces, ..., y el lado d haya aparecido nd veces. Debido a que las identidades de los lados no importan (todos ellos tienen las mismas posibilidades), la descripción de este objetivo se puede condensar: supongamos que i0 lados no tienen que aparecer en absoluto, i1 de los lados es necesario que aparezca solo una vez, ... y in n=max(n1,n2,…,nd)
Una recurrencia fácil está disponible. En el próximo lanzamiento, el lado que aparece corresponde a uno de los : es decir, o no necesitábamos verlo, o necesitábamos verlo una vez, ..., o necesitábamos verlo más veces . es la cantidad de veces que necesitábamos verlo.ij n j
Cuando , no necesitábamos verlo y nada cambia. Esto sucede con probabilidad .j=0 i0/d
Cuando entonces necesitábamos ver este lado. Ahora hay un lado menos que necesita verse veces y un lado más que necesita verse veces. Por lo tanto, convierte en e convierte en . Deje que esta operación en los componentes de se designe , para quej j - 1 i j i j - 1 i j - 1 i j + 1 i i ⋅ jj>0 j j - 1 yoj yoj- 1 yoj - 1 yoj+ 1 yo i ⋅j
Esto sucede con probabilidad .yoj/ d
Simplemente tenemos que contar esta tirada de dados y usar la recursión para decirnos cuántas tiradas más se esperan. Por las leyes de la expectativa y la probabilidad total,
(Comprendamos que siempre que , el término correspondiente en la suma es cero).yoj= 0
Si , hemos terminado y . De lo contrario, podemos resolver para , dando la fórmula recursiva deseadae ( i ) = 0 e ( i )yo0 0= d e ( i ) = 0 e ( i )
Tenga en cuenta que es el número total de eventos que deseamos ver. La operación reduce esa cantidad en uno para cualquier siempre que , que es siempre el caso. Por lo tanto, esta recursión termina a una profundidad precisa(igual a en la pregunta). Además (como no es difícil de verificar) el número de posibilidades en cada profundidad de recursión en esta pregunta es pequeño (nunca excede de ). En consecuencia, este es un método eficiente, al menos cuando las posibilidades combinatorias no son demasiado numerosas y recordamos los resultados intermedios (de modo que no haya valor de⋅ j j > 0 i j > 0 | yo | 3 ( 6 ) = 18 8 e
que
Eso me pareció terriblemente pequeño, así que realicé una simulación (usando32,669 0,027
R
). Después de más de tres millones de tiradas de dados, este juego se jugó hasta su finalización más de 100,000 veces, con una longitud promedio de . El error estándar de esa estimación es : la diferencia entre este promedio y el valor teórico es insignificante, lo que confirma la precisión del valor teórico.0,027La distribución de longitudes puede ser de interés. (Obviamente, debe comenzar a las , el número mínimo de rollos necesarios para recoger los seis lados tres veces cada uno).18 años
Implementación
Aunque el cálculo recursivo de es simple, presenta algunos desafíos en algunos entornos informáticos. El principal de ellos es almacenar los valores de medida que se calculan. Esto es esencial, ya que de lo contrario cada valor se calculará (de forma redundante) una cantidad muy grande de veces. Sin embargo, el almacenamiento potencialmente necesario para una matriz indexada por podría ser enorme. Idealmente, solo los valores de que realmente se encuentran durante el cálculo deben almacenarse. Esto requiere un tipo de matriz asociativa.mi e ( i ) yo yo
Para ilustrar, aquí está elyo i ⋅j
R
código de trabajo . Los comentarios describen la creación de una clase simple "AA" (matriz asociativa) para almacenar resultados intermedios. Los vectores se convierten en cadenas y se usan para indexar en una lista que contendrá todos los valores. La operación se implementa como .E
%.%
Estos preliminares permiten que la función recursiva se defina de manera bastante simple de forma paralela a la notación matemática. En particular, la líneami
es directamente comparable a la fórmula anterior. Tenga en cuenta que todos los índices se han incrementado en porque comienza a indexar sus matrices en lugar de .( 1 ) 1 1 0 0
R
El tiempo muestra que toma segundos calcular ; su valor es0,01
e(c(0,0,0,6))
El error de redondeo de punto flotante acumulado ha destruido los dos últimos dígitos (lo que debería ser en
68
lugar de06
).Finalmente, aquí está la implementación original de Mathematica que produjo la respuesta exacta. La memorización se realiza a través de la
e[i_] := e[i] = ...
expresión idiomática , eliminando casi todos losR
preliminares. Sin embargo, internamente, los dos programas están haciendo las mismas cosas de la misma manera.fuente
La versión original de esta pregunta comenzó su vida preguntando:
Distribución de la cantidad de rollos necesarios ... de modo que cada lado aparezca 3 veces
Dejar:N=min{n:Xi≥3∀i}. N P(N≤n)=P(X∀i≥3∣∣n)
Por supuesto, la distribución no tiene límite superior, pero aquí podemos resolver fácilmente tantos valores como sea prácticamente necesario. El enfoque es general y debería funcionar igual de bien para cualquier combinación deseada de lados requerida.
fuente