Pregunta:
Valor esperado de la suma de cartas
Craig Bing
2016-01-29 20:24:07 UTC
view on stackexchange narkive permalink

Si cada carta de una baraja regular de 52 tiene puntos que corresponden a su número (como 2 de corazones son 2 puntos, 7 de tréboles son 7 puntos), la jota, la reina y el rey son 10 puntos cada uno y sigues dibujando sin reemplazo hasta que la suma de todos los puntos sea 10 o más ... ¿cuál es la media de la suma de puntos?

¿Qué quiere decir con "valor esperado de obtener una suma de puntos de 10 o más"?
¿Quizás estás pidiendo el * número de sorteos * esperado?Dado que no todo el mundo entenderá lo mismo sobre el "mazo normal" (depende del país en el que te encuentres y del juego que tengas en mente), sería de ayuda ser más específico sobre el contenido del mazo (aunqueeso realmente no afecta cómo se obtiene la respuesta).También debes aclarar qué es un "empate": ¿reemplazas la carta y reorganizas el mazo cada vez o no?Por cierto, varias técnicas para abordar este tipo de preguntas se describen en http://stats.stackexchange.com/questions/67179.
Gracias a todos por sus comentarios.Edité la pregunta para aclarar las dudas.
Parece que Ace es 1, pero debes incluirlo.
Tres respuestas:
whuber
2016-01-29 23:41:19 UTC
view on stackexchange narkive permalink

La pregunta solicita la "media de la suma de puntos". Debido a que el objetivo es 10 y ningún valor excede 10, esta es la media de una distribución definida en los diez enteros $ 10, 11, \ ldots, 10 + 10-1 $.

Se necesita aproximadamente la misma cantidad de potencia de cálculo para calcular esta distribución, exactamente , como lo hace para realizar una pequeña simulación. He aquí cómo.

La baraja está determinada por el número de cartas de cada punto. Sea $ k_1 = 4 $ cartas que valen un punto (los ases), $ k_2 $ que valen dos puntos, y así sucesivamente. Escribiendo $ n = 10 $, el vector $ \ mathbf {k} = (k_1, k_2, \ ldots, k_n) $ para un mazo estándar es

$$ \ mathbf {k} = (4, 4,4,4,4,4,4,4,4,16). $$

Cuando robamos una carta de este mazo, retiramos una carta que valga $ i $ puntos con probabilidad

$$ P _ {\ mathbf {k}} (i) = \ frac {k_i} {k_1 + k_2 + \ cdots + k_n}. $$

El mazo cambia después: $ k_i $ se reduce a $ k_i-1 $. Indiquemos el nuevo vector con la notación

$$ S_i (\ mathbf {k}) = (k_1, k_2, \ ldots, k_ {i-1}, k_i - 1, k_ {i + 1 }, \ ldots, k_n). $$

Sea $ f _ {\ mathbf {k}} (t, s) $ la distribución de la suma de puntos cuando el objetivo es $ t $ comenzando con una suma de $ s $ puntos. Deseamos encontrar $ f _ {\ mathbf {k}} (10, 0) $.

Los posibles empates se describen mediante $ n = 10 $ eventos distintos que no se superponen: el evento $ i $ consiste de sacar una carta por valor de $ i $ puntos. Cuando eso sucede, cualquier suma inicial $ s $ aumenta a $ s + i $, el objetivo que necesitamos alcanzar se reduce a $ t-i $ y el mazo se cambia a $ S_i (\ mathbf {k}) $. La Ley de la probabilidad total nos dice que sumemos las posibilidades de todos estos eventos. Por lo tanto,

$$ f _ {\ mathbf {k}} (t, s) = \ sum_ {i = 1} ^ n P _ {\ mathbf {k}} (i) f_ {S_i (\ mathbf {k})} (ti, s + i). \ tag {*} $$

Ciertamente, cuando $ s $ excede el objetivo original ($ 10 $), no queda nada por resolver: el dibujo termina y la distribución será del 100% del valor total $ s $. De manera equivalente, cuando el objetivo es $ 0 $ o negativo, entonces deberíamos poner toda la probabilidad en cualquier valor que $ s $ tenga actualmente, porque el objetivo obviamente se ha cumplido.

Estas consideraciones dan una fórmula recursiva efectiva $ ( *) $ por $ f $. Debido a que $ t $ disminuye en al menos $ 1 $ con cada iteración, se garantiza que terminará dentro de los $ 10 $ extraídos. (De hecho, terminará dentro de los sorteos de $ 7 $, porque pronto todos los ases se agotarían). Esto es corto. (Solo se necesitan 4389 llamadas a $ f $ y solo 446 de ellas tienen que realizar la suma en $ (*) $). Con cálculos de doble precisión, la respuesta solo toma una décima de segundo en obtener. Da estas probabilidades para los valores finales $ 10, 11, \ ldots, 19 $ (que se han redondeado para facilitar la lectura):

  0.37906 0.09108 0.08503 0.08203 0.07512 0.07132 0.06356 0.05877 0.04995 0.04408  código> 

Su expectativa es $$ 10 \ times 0.37906 + 11 \ times 0.09108 + \ cdots + 19 \ times 0.04408 = 12.7534. $$


Un R la implementación de $ f $ se muestra a continuación. Primero, sin embargo, sus resultados pueden verificarse mediante simulación. El juego se juega $ 10 ^ 4 $ veces, se cuentan las sumas finales y esas cuentas se comparan con los resultados anteriores con una prueba de $ \ chi ^ 2 $. (Es aplicable y preciso porque el valor esperado más pequeño de cualquier recuento de celdas es $ 440.8 $ muy grande).

  set.seed (17) deck <- c (rep (4, 9), 16) # deck [i] cuenta las cartas de valor `i`.deck.long <- unlist (sapply (1: length (deck), function (i) rep (i, deck [i]))) sim <- replicate (1e4, {x <- cumsum (sample (deck.long, 10)) x [which (x > = 10) [1]]}) y <- table (sim ) z <- c (rep (0, 10), y / sum (y)) rbind (x, z) chisq.test (y, p = x [- (1:10)])  

La salida es

  Prueba de chi-cuadrado para datos de probabilidades dados: yX-squared = 3.8856, df = 9, p-value = 0.9188  

El valor p grande demuestra coherencia entre la simulación y las respuestas teóricas.

Así es como se puede calcular $ f $.

  f <- función (cubierta, total = 0, objetivo = 10, máximo = 20) {x <- rep (0, máximo) if (objetivo < = 0) {x [total + 1] <- 1 return ( x)} n <- sum (mazo) x <- sapply (1: longitud (mazo), función (i) {k <- mazo [i] if (k < = 0) return (x) d <- mazo d [i] <- d [i] - 1 k / n * f (d, total + i, target - i, máximo)}) return (rowSums (x))} x <- f (deck) round (x [ - (1:10)], 5) sum (x * (1: length (x) -1)) # Valor esperado  

Por cierto, las mismas técnicas, con solo las modificaciones más pequeñas (que dejo a los lectores interesados) - responderá a la pregunta "¿cuál es la distribución del número de empates en el juego?" La respuesta (nuevamente con doble precisión) es el vector de probabilidades correspondientes a 1, 2, ..., 7 sorteos:

  3.076923e-01 4.811463e-01 1.762293e-01 3.176286e-02 3.029212e-03 1.381895e-04 1.866540e-06  

Una simulación similar, esta vez de un millón de iteraciones, debido a estas probabilidades volverse tan pequeño - produce estas frecuencias observadas:

  1 2 3 4 5 6 7 306897 481652 176242 32052 3019135 3  

Estos no difieren significativamente de los valores calculados.

@Tim Gracias por notar que: Cometí un error de indexación de uno en uno al calcular la expectativa, porque olvidé que había comenzado la indexación en 0 en lugar de 1 (como se muestra en la línea `x [total + 1] <-1`).En lugar de `sum (x * 1: length (x))` necesitamos calcular `sum (x * (1: length (x) -1))`.Como resultado, mi respuesta indicada fue * exactamente * $ 1 $ demasiado grande.Hice ese cambio en el código.
Tim
2016-01-29 21:25:18 UTC
view on stackexchange narkive permalink

Según su definición, tiene tarjetas de $ 16 $ ($ 10 $, $ \ text {J} $, $ \ text {K} $, $ \ text {Q} $) que valen $ 10 $ puntos, por lo que con probabilidad $ 16/52 $ obtienes $ 10 $ puntos en un solo sorteo. Dado que $ 9 + \ text {cualquier cosa} = 10 $, entonces si tomamos en consideración que hay $ 4 $ nueves, entonces sabemos instantáneamente que con una probabilidad mayor que $ 20/52 $ terminas en dos sorteos. Sin embargo, la devolución de dos sorteos es fácil de obtener enumerando todas las combinaciones de $ 52 \ elija 2 $ de pares de cartas y sumando sus puntajes.

  unique_cards <- c (1:10, 10, 10, 10) # A, 1, 2, ..., 10, J, Q, Kunique_cards <- rep (unique_cards, 4) # cada uno aparece 4 timescomb <- combn (unique_cards, 2 ) # tomar todas las combinaciones posibles de pares de cartas  

lo que da $ 79 \% $ probabilidad de obtener una puntuación de al menos $ 10 $ en dos sorteos

  > sum (colSums (comb) > = 10) / choose (52, 2) # aceptado / todas las combinaciones [1] 0.7888386  

Solución perezosa para más Se pueden obtener más de dos sorteos mediante una simple simulación, en la que se baraja todo el mazo y luego se extraen las cartas hasta que su puntuación total es de al menos $ 10 $.

  set.seed (123) sim <- function (target = 10) {res <- cumsum (sample (uni que_cards)) # barajar, dibujar y sumar n <- which.max (res > = target) # obtener la primera puntuación > = 10 c (sum = res [n], n = n)} R <- 1e4res <- replicate ( R, sim ())  

y el resultado es que, en promedio, debes sacar dos cartas y la puntuación total promedio es de $ 12.77 $

  > aplicar (res, 1, resumen) suma nMin. 10.00 1.0001st Qu. 10.00 1.000 Mediana 12.00 2.000 Media 12.77 1.946 3 ° Qu. 15,00 2.000 Máx. 19.00 6.000  

Además, como se esperaba, con aproximadamente $ 30 \% $ de probabilidad de terminar con un empate, pero con $ 79 \% $ de probabilidad de terminar con dos empates y rara vez se superan los tres:

  > cumsum (table (res [2,]) / R) 1 2 3 4 5 6 0.3006 0.7910 0.9653 0.9968 0.9999 1.0000  
paparazzo
2016-12-29 00:52:28 UTC
view on stackexchange narkive permalink

Ejecuté la simulación en C # .NET
obtengo 12,75 veces de forma consistente

  decimal estático privado AvgSumToTen () {Int32 loops = Int32.MaxValue / 10; // bucles = 100; Rand aleatorio = nuevo Random (); int thisSum; ulong ttl = 0; int b; int bTenRaw; int bTen; Valores de HashSet <int> = new HashSet<int> (); para (Int32 i = 0; i bucles <; i ++) {thisSum = 0; valores.Clear (); while (thisSum < 10) {b = rand.Next (0, 52); if (valores. Contiene (b)) continuar; valores.Añadir (b); bTenRaw = b% 13 + 1; bTen = (bTenRaw > = 10)? 10: bTenRaw; //Debug.WriteLine("bTen "+ bTen); thisSum + = bTen; } //Debug.WriteLine("thisSum "+ thisSum + Environment.NewLine); ttl + = (ulong) thisSum; if (ttl > (ulong.MaxValue - 100)) Debug.WriteLine ("ttl > (ulong.MaxValue - 100)" + thisSum); } respuesta decimal = (decimal) ttl / (decimal) bucles; Debug.WriteLine ("respuesta" + respuesta.ToString ("N4")); devolver respuesta;}  


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...