Rollo de 30 colindado muere. Agregar cada consecutivos de resultados. Deja de rodar cuando la suma >= 300. ¿Cuál es el resultado más probable de la suma?
Respuestas
¿Demasiados anuncios?Claramente $300$. Ha $30$ de posibilidades por lo que la suma era antes, mientras que para $329$ sólo tiene uno. Si el objetivo está por encima del valor máximo en el morir, lo más probable es lugar de parada es el destino. Deje $P(n)$ ser la posibilidad de que $n$ es el último total antes de llegar o pasar a $300$. Se puede depender de $n$, pero es mayor que cero para todos los $270 \le n \le 299$. La posibilidad de golpear $300$ $\sum_{i=270}^{299}P(i)\frac 1{i-269}.$ $\frac 1{i-269}$ término viene porque sabemos que tenemos que rodar un número lo suficientemente grande para golpear o exceder $300$, pero aceptable números son igualmente distribuidos. La posibilidad de golpear $301$ $\sum_{i=271}^{299}P(i)\frac 1{i-269}.$ La probabilidad de que te golpeó $302$ $\sum_{i=272}^{299}P(i)\frac 1{i-269}.$ y así sucesivamente hasta que la oportunidad de golpear $329$ $\sum_{i=299}^{299}P(i)\frac 1{i-269}.$ Cada una de las sucesivas suma tiene uno menos positiva plazo, de modo que las sumas son estrictamente decreciente.
Ross Millikan respuesta se basa en el análisis matemático, pero para entender su solución escribí un programa y prueba de todos modos. Aquí están mis resultados.
Código De Matlab Utilizado
trials = 1000000;
results = zeros(1,trials);
for n = 1:trials
sum = 0;
while sum < 300
sum = sum + ceil(30*rand);
end
results(n) = sum;
end
hist(results,30);
Resultados
Como dijo Ross Millikan, es fácil ver que 300 es el resultado más probable.
Deje $p_n$ la probabilidad de éxito de la total $n$. Entonces podemos llegar a $300$ por llegar a $299$ y rolling $1$, o $298$ y rolling $2$, o ... por lo que el $$p_{300}=\frac 1{30}(p_{299}+p_{298}+ \dots + p_{270})$$
A continuación, llegamos a $301$ lanzando $2$ $299$ etc $$p_{301}=\frac 1{30}(p_{299}+p_{298}+\dots+p_{271})$$
El patrón es ahora evidente, como es el hecho de que las probabilidades disminuyen a medida que el número aumenta.
Yo no este post originalmente debido a que Ross Millikan había publicado la idea esencial. Las probabilidades por debajo de $300$ no necesitan ser idénticas, pero son positivos, y son intuitivamente similares en magnitud. Esto explica la steplike estructura de la gráfica en la de Phil solución. Pero ya sabemos que ellos son positivos, no necesitamos saber sus valores exactos para responder a la pregunta.
Contar el número de rollo de secuencias (de algunos fijos, sino arbitraria lengtzh $l$) que conducen a un resultado $s\ge 300$. Para cada secuencia que termina en $s>300$, obtenemos un sequnce que termina en exactamente $300$ mediante la sustitución de la última tirada $x$ (que debe ser$>s-300$)$x+300-s$. Esto muestra que el final de la suma de la $300$ es al menos tan probable como el final de la suma de la $s$. Ahora desde $300>30$, hay al menos una secuencia que termina en una suma de $300$, con una última tirada de $30$. Esta secuencia no es obtenido a partir de una secuencia que conduce a la suma de $s>300$ de las maneras descritas anteriormente. Por lo tanto, el número de secuencias (de al menos una longitud específica) que conduce a $300$ es estrictamente mayor thanthe número de secuencias de la misma longitud que conduce a la suma de $s$ si $s>300$. En consecuencia, $300$ es muy probable que el final de la suma.
Vi esta pregunta en las Estadísticas del Blog en twitter y pensé que sería divertido sim. Veo a alguien que ya lo hizo en matlab. Aquí está el código para un R
simul (10 repeticiones de 50.000 simulaciones) y ggplot2 de salida con 2sd errorbars.
require(data.table)
require(ggplot2)
set.seed(1)
## PARAMETERS
reps <- 10 # number of reps to conduct
simuls <- 5e4 # number of simulations per rep
Sides <- 30 # number of dungeons and dragon playing friends that I have
StopVal <- 300 # the min value to reach before stopping
## FUNCTIONS
rollDie <- function(StopVal=300) {
total <- 0
while (total < StopVal) {
total <- total + sample(Sides, 1, TRUE)
}
return(c(total=total))
}
tally <- function(res, i) {
ret <- rev(table(res))
ret / sum(ret)
data.frame(Roll=as.numeric(names(ret)), Prob=ret/sum(ret), Trial=i)
}
## SIMULATE
rolls <- lapply(seq(reps), function(i) replicate(simuls, rollDie(StopVal)))
results <- lapply(seq(reps), function(i) tally(rolls[[i]], i))
## AGGREGATE
dat <- do.call(rbind, results)
dat <- data.table(dat, key="Roll")
dat[, c("MeanProb", "SDProb") := list(mean(Prob), sd(Prob)), by=Roll]
## PLOT
P <- ggplot(dat[Trial==1], aes(x=as.factor(Roll), y=MeanProb)) +
geom_bar(stat="identity", fill="lightblue") +
geom_errorbar(aes(ymin=MeanProb-(2*SDProb), ymax=MeanProb+(2*SDProb)), width=.3, color="red") +
theme(axis.text.x = element_text(angle = 45, size=rel(0.75))) +
labs(x="Roll Total", y="Prob") +
ggtitle(paste0("d", Sides, " rolling X, X ≥ ", StopVal))
ggsave("~/d30_exceed300.png", plot=P)
P