Rolar uma fieira 6 lados até que o total


11

Aqui está a pergunta:

Você lança um dado justo de 6 lados iterativamente até que a soma dos dados seja maior ou igual a M. Qual é a média e o desvio padrão da soma menos M quando M = 300?

Devo escrever um código para responder a esse tipo de perguntas?

Por favor, me dê algumas dicas sobre isso. obrigado!


1
Por favor, adicione a [self-study]tag e leia seu wiki . Diga-nos o que você entende até agora, o que tentou e onde está preso. Forneceremos dicas para ajudá-lo a se soltar.
gung - Restabelece Monica

2
Suspeito que possa ser lido como " muito grande ", pois acredito que ou daria quase exatamente o mesmo resultado. O que eu gostaria de fazer é encontrar a distribuição da soma menos . M M = 301 M = 999 MM=300MM=301M=999M
Henry

Respostas:


13

Você certamente pode usar código, mas eu não simularia.

Vou ignorar a parte "menos M" (você pode fazer isso com bastante facilidade no final).

Você pode calcular as probabilidades de forma recursiva com muita facilidade, mas a resposta real (com um alto grau de precisão) pode ser calculada a partir de um raciocínio simples.

Deixe os rolos ser . Deixe- S t = Σ t i = 1 X i .X1,X2,...St=i=1tXi

Deixe ser o menor índice de onde S τM .τSτM

P(Sτ=M)=P(got to M6 at τ1 and rolled a 6)+P(got to M5 at τ1 and rolled a 5)++P(got to M1 at τ1 and rolled a 1)=16j=16P(Sτ1=Mj)

insira a descrição da imagem aqui

similarmente

P(Sτ=M+1)=16j=15P(Sτ1=Mj)

P(Sτ=M+2)=16j=14P(Sτ1=Mj)

P(Sτ=M+3)=16j=13P(Sτ1=Mj)

P(Sτ=M+4)=16j=12P(Sτ1=Mj)

P(Sτ=M+5)=16P(Sτ1=M1)

Equações semelhantes à primeira acima poderiam então ser executadas (pelo menos em princípio) até que você atinja qualquer uma das condições iniciais para obter uma relação algébrica entre as condições iniciais e as probabilidades que queremos (o que seria tedioso e não especialmente esclarecedor) , ou você pode construir as equações a seguir correspondentes e executá-las a partir das condições iniciais, o que é fácil de executar numericamente (e foi assim que verifiquei minha resposta). No entanto, podemos evitar tudo isso.

As probabilidades dos pontos estão executando médias ponderadas das probabilidades anteriores; estes (geometricamente rapidamente) suavizarão qualquer variação na probabilidade da distribuição inicial (toda probabilidade no ponto zero no caso do nosso problema). o

Para uma aproximação (muito precisa), podemos dizer que a M - 1 deve ser quase igualmente provável no tempo τ - 1 (realmente próximo a ela) e, portanto, do acima exposto, podemos escrever que as probabilidades serão estar muito perto de estar em proporções simples e, como elas devem ser normalizadas, podemos apenas escrever probabilidades.M6M1τ1

Ou seja, podemos ver que, se as probabilidades de começar de a M - 1 eram exatamente iguais, existem 6 maneiras igualmente prováveis ​​de chegar a M , 5 de chegar a M + 1 e assim por diante até 1 maneira de chegar ao M + 5 .M6M1MM+1M+5

Ou seja, as probabilidades estão na proporção 6: 5: 4: 3: 2: 1 e somam 1, por isso são triviais para escrever.

Calculá-lo exatamente (até erros numéricos arredondados acumulados) executando as recursões de probabilidade adiante de zero (eu fiz isso em R) fornece diferenças na ordem de .Machine$double.eps( na minha máquina) a partir da aproximação acima (ou seja, simples o raciocínio ao longo das linhas acima fornece respostas efetivamente exatas , pois elas são tão próximas das respostas calculadas a partir da recursão quanto esperamos que as respostas exatas sejam).2.22e-16

Aqui está o meu código para isso (a maioria está apenas inicializando as variáveis, o trabalho está todo em uma linha). O código inicia após o primeiro lançamento (para me salvar colocando uma célula 0, que é um pequeno incômodo para tratar em R); em cada etapa, pega a célula mais baixa que poderia ser ocupada e avança por um rolo de matriz (espalhando a probabilidade dessa célula pelas próximas 6 células):

 p = array(data = 0, dim = 305)
 d6 = rep(1/6,6)
 i6 = 1:6
 p[i6] = d6
 for (i in 1:299) p[i+i6] = p[i+i6] + p[i]*d6

(poderíamos usar rollapply(from zoo) para fazer isso de forma mais eficiente - ou várias outras funções - mas será mais fácil traduzir se eu deixar explícito)

Observe que d6é uma função de probabilidade discreta entre 1 e 6; portanto, o código dentro do loop na última linha está construindo médias ponderadas em execução dos valores anteriores. É esse relacionamento que suaviza as probabilidades (até os últimos valores nos quais estamos interessados).

Então, aqui estão os primeiros 50 valores ímpares (os primeiros 25 valores marcados com círculos). Em cada , o valor no eixo y representa a probabilidade que se acumulou na célula mais posterior antes de a avançarmos para as próximas 6 células.t

insira a descrição da imagem aqui

Como você vê, ela se suaviza (para , o inverso da média do número de passos que cada rolo de dado leva) muito rapidamente e permanece constante.1/μ

E quando pressionamos , essas probabilidades desaparecem (porque não estamos colocando a probabilidade para valores em M e além adiante).MM

insira a descrição da imagem aqui

Portanto, a ideia de que os valores em a M - 6 devem ser igualmente prováveis, porque as flutuações das condições iniciais serão suavizadas, é claramente visto como o caso.M1M6

MM1M6τ1M

Rt=StMR0

A partir da distribuição de probabilidade, a média e a variação das probabilidades são então simples.

M

53253M=300


+1 Não entendi completamente essa resposta até desenvolver a minha, que agora parece supérflua. Talvez alguns leitores vejam valor nos resultados de ilustração e simulação, por isso vou manter minha resposta em aberto.
whuber

1
@whuber Minha resposta é muito menos concreta do que eu gostaria, porque estava operando sob a suposição de que isso era dever de casa (por isso, evitei fazer muita derivação ou fornecer qualquer código - era mais um objetivo). Achei difícil escrever uma resposta clara sobre esse problema (é aquele em que a concretude ajuda mais do que o normal). Como você forneceu uma resposta que contém os números e o código reais (que resposta eu definitivamente acho que deveria ficar), sinto que posso fazer algumas coisas que, espero, tornarão minha resposta mais fácil de entender (seja mais explícito, forneça meu próprio código) .
Glen_b -Reinstala Monica

Eu escrevi uma explicação muito melhor desse tipo de problema em algum lugar alguns anos atrás. Se eu me lembrar / descobrir como foi, tentarei incluir algumas delas aqui.
Glen_b -Reinstala Monica

@Glen_b entendeu um pouco as equações. Eu sou um novato. como começar a pensar assim? Há algum livro que você possa recomendar para esse tipo de objetivo? Sua resposta seria muito útil.
Usual Suspect

Suspeito habitual - escrevi as equações imaginando um tabuleiro de jogo como uma longa pista e dizendo "quais são as maneiras de chegar a esse espaço de uma maneira que se encaixe nas condições do problema e com que chances?"; Eu fiz isso para um espaço rotulado como "M", depois para o espaço após ele e assim por diante. Eu escrevi o cálculo semelhante daqui para frente para o código imaginando estar perto da célula inicial e dizendo "se eu estivesse aqui, eu seria o próximo, com que chances?". As equações são todas apenas as respostas para essas perguntas.
Glen_b -Reinstala Monica

8

Ω0nEnn

En={ωΩ|nω}.

XM(ω)ωMXMMXM

XM(ω)M{0,1,2,3,4,5}XMM=kωp(i)=1/6ii=1,2,3,4,5,6

Pr(XMM=k)=j=k6Pr(EM+kj)p(j)=16j=k6Pr(EM+kj).

M

Pr(Ei)2/7.
(1+2+3+4+5+6)/6=7/2ω

EiEi11Ei22Ei66

Pr(Ei)=j=16Pr(Eij)p(j)=16j=16Pr(Eij).

Os valores iniciais desta sequência são

Pr(E0)=1;Pr(Ei)=0,i=1,2,3,.

Figura: plot de E_i

Pr(Ei)i2/7

Pr(Ei)ith

x6p(1)x5p(2)x4p(3)x3p(6)=x6(x5+x4+x3+x2+x+1)/6.

exp(0.314368)exp(36.05)i36.05/0.314368=1152/7

M=300115EM+kj=2/7

Pr(XMM=(0,1,2,3,4,5))=(27)(16)(6,5,4,3,2,1).

Computar a média e a variação dessa distribuição é simples e fácil.


RM+5=305X300300χ20.1367

M <- 300
n.iter <- 1e5
set.seed(17)
n <- ceiling((2/7) * (M + 3*sqrt(M)))
dice <- matrix(ceiling(6*runif(n*n.iter)), n, n.iter)
omega <- apply(dice, 2, cumsum)
omega <- omega[, apply(omega, 2, max) >= M+5]
omega[omega < M] <- NA
x <- apply(omega, 2, min, na.rm=TRUE)
count <- tabulate(x)[0:5+M]
(cbind(count, expected=round((2/7) * (6:1)/6 * length(x), 1)))
chisq.test(count, p=(2/7) * (6:1)/6)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.