Si cada tarjeta en una tarjeta regular de 52 cubierta tiene puntos que corresponde a su número (como 2 corazones 2 puntos, 7 de clubes es de 7 puntos), Jack, Reina, rey siendo cada uno 10 puntos y te mantenga dibujo sin reemplazo hasta que la suma de todos los puntos es 10 o más... ¿Cuál es la media de la suma de puntos?
Respuestas
¿Demasiados anuncios?La pregunta se pide la "media de la suma de puntos". Debido a que el objetivo es de 10 y no hay ningún valor supera los 10, esto es la media de una distribución definida en el diez enteros $10, 11, \ldots, 10+10-1$.
Se tarda aproximadamente la misma cantidad de poder de cómputo para el trabajo de esta distribución, exactamentecomo se hace para realizar una simulación. He aquí cómo.
La cubierta está determinado por el número de tarjetas de cada punto. Vamos a no ser $k_1 = 4$ tarjetas digno de un punto (los ases), $k_2$ valor de dos puntos, y así sucesivamente. Escrito $n=10$, el vector $\mathbf{k}=(k_1,k_2, \ldots, k_n)$ para una baraja estándar es
$$\mathbf{k} = (4,4,4,4,4,4,4,4,4,16).$$
When we draw a card from this deck, we remove a card worth $yo$ points with probability
$$P_{\mathbf{k}}(i) = \frac{k_i} {k_1+k_2+\cdots+k_n}.$$
The deck changes afterwards: $k_i$ is reduced to $k_i-1$. Let's indicate the new vector with the notation
$$S_i(\mathbf{k}) = (k_1, k_2, \ldots, k_{i-1}, k_i - 1, k_{i+1}, \ldots, k_n).$$
Let $f_{\mathbf{k}}(t, s)$ be the distribution of the sum of points when the target is $t$ starting with a sum of $s$ points. We wish to find $f_{\mathbf{k}}(10, 0)$.
The possible draws are described by $n=10$ distinct, non-overlapping events: event $i$ consists of drawing a card worth $i$ points. When that happens, any starting sum $s$ is increased to $s+i$, the target we need to reach is reduced to $t-i$, and the deck is changed to $S_i(\mathbf{k})$. The Law of Total Probability tells us to sum the chances over all these events. Thus,
$$f_{\mathbf{k}}(t, s) = \sum_{i=1}^n P_{\mathbf{k}}(i)f_{S_i(\mathbf{k})}(t-i, s+i).\tag{*}$$
Certainly when $s$ exceeds the original target ($10$) there's nothing left to figure out: the drawing terminates and the distribution will be 100% on the total value $s$. Equivalently, when the target is $0$ or negative then we should put all the probability on whatever value $s$ currently has, because the target obviously has been met.
These considerations give an effective recursive formula $(*)$ for $f$. Because $t$ decreases by at least $1$ with each iteration, it is guaranteed to terminate within $10$ draws. (It will actually terminate within $7$ draws, because soon all the aces would be used up.) This is short. (Just 4389 calls to $f$ are needed and only 446 of those have to perform the summation in $(*)$.) With double-precision computations the answer takes only a tenth of a second to obtain. It gives these probabilities for the final values $10, 11, \ldots, 19$ (which have been rounded for ease of reading):
0.37906 0.09108 0.08503 0.08203 0.07512 0.07132 0.06356 0.05877 0.04995 0.04408
Their expectation is $$10\times 0.37906 + 11\times 0.09108 + \cdots + 19\times 0.04408 = 12.7534.$$
An R
implementation of $f$ is given below. First, though, its results can be checked by simulation. The game is played $10^4$ times, the final sums are tallied, and those tallies are compared to the preceding results with a $\chi^2$ test. (It is applicable and accurate because the smallest expected value of any cell count is a very large $440.8$.)
set.seed(17)
deck <- c(rep(4, 9), 16) # deck[i] counts cards of value `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)])
The output is
Chi-squared test for given probabilities
data: y
X-squared = 3.8856, df = 9, p-value = 0.9188
The large p-value demonstrates consistency between the simulation and the theoretical answers.
Here is how $f$ puede ser calculada.
f <- function(deck, total=0, target=10, maximum=20) {
x <- rep(0, maximum)
if (target <= 0) {
x[total+1] <- 1
return(x)
}
n <- sum(deck)
x <- sapply(1:length(deck), function(i) {
k <- deck[i]
if (k <= 0) return (x)
d <- deck
d[i] <- d[i] - 1
k/n * f(d, total + i, target - i, maximum)
})
return(rowSums(x))
}
x <- f(deck)
round(x[-(1:10)], 5)
sum(x * (1:length(x)-1)) # Expected value
Por cierto, las mismas técnicas--con sólo la más pequeña de las modificaciones (que dejo a los lectores interesados)--va a responder a la pregunta "¿cuál es la distribución del número de sorteos en el juego?" La respuesta (de nuevo en doble precisión) es el vector de probabilidades correspondientes a 1, 2, ..., 7 empates:
3.076923e-01 4.811463e-01 1.762293e-01 3.176286e-02 3.029212e-03 1.381895e-04 1.866540e-06
Una similar de la simulación, en esta ocasión de un millón de iteraciones, debido a que estas probabilidades de conseguir tan pequeña, produce estas frecuencias observadas:
1 2 3 4 5 6 7
306897 481652 176242 32052 3019 135 3
Estos no difieren significativamente de los valores calculados.
Por su definición, ha $16$ tarjetas ($10$, $\text{J}$, $\text{K}$, $\text{Q}$) que vale la pena $10$ puntos, por lo que con probabilidad de $16/52$ obtener $10$ puntos en un solo empate. Desde $9+\text{anything}=10$, entonces si tomamos en consideración que no es $4$ nines, que podemos saber de inmediato que con probabilidad mayor que el $20/52$ termine en dos sorteos. Sin embargo, el retorno de dos empates es simple obtener la enumeración de todos los $52 \choose 2$ combinaciones de pares de cartas y sumar sus puntuaciones.
unique_cards <- c(1:10, 10, 10, 10) # A, 1, 2, ..., 10, J, Q, K
unique_cards <- rep(unique_cards, 4) # each appears 4 times
comb <- combn(unique_cards, 2) # take all possible combinations of card pairs
lo que le da a $79\%$ de probabilidad de obtener la puntuación de, al menos, $10$ en dos sorteos
> sum(colSums(comb) >= 10)/choose(52, 2) # accepted / all combinations
[1] 0.7888386
Perezoso solución para más de dos empates, puede ser obtenida por un simple simulación, donde toda la baraja es revuelta y, a continuación, se dibujan las tarjetas hasta que su puntuación total es de al menos $10$.
set.seed(123)
sim <- function(target = 10) {
res <- cumsum(sample(unique_cards)) # shuffle, draw and sum
n <- which.max(res >= target) # take first score >= 10
c(sum = res[n], n = n)
}
R <- 1e4
res <- replicate(R, sim())
y el resultado es que, en promedio, usted tiene que robar dos cartas y el promedio de la puntuación total es $12.77$
> apply(res, 1, summary)
sum n
Min. 10.00 1.000
1st Qu. 10.00 1.000
Median 12.00 2.000
Mean 12.77 1.946
3rd Qu. 15.00 2.000
Max. 19.00 6.000
Por otra parte, 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 obtiene más de tres empates:
> cumsum(table(res[2,])/R)
1 2 3 4 5 6
0.3006 0.7910 0.9653 0.9968 0.9999 1.0000
No está seguro de cómo responder a tu pregunta así adelantó y lo había simulado.
# number of simulations
N <- 10000
cards <- c(rep(2:10,4), rep(10,16))
res <- NULL
for( i in 1:N){
#sample without replacement
s <- sample(cards,52)
#cumulative sum
x <- cumsum(s)
#when do we first hit 10+
idx <- which(x >= 10)
#store results
res <- rbind(res,data.frame(idx = idx[1], value = x[idx[1]]))
}
#question 1: Expected value of our sum
mean(res$value) # 12.6421
#question 2: Expected value of when we hit 10+
mean(res$idx) # 1.746
Parece es muy probable que golpear 10 + en el primer sorteo (ya que hay tantas tarjetas de 10 en la cubierta).