Quero calcular a distribuição de probabilidade para o total de uma combinação de dados.
Lembro que a probabilidade de é o número de combinações que totalizam esse número sobre o número total de combinações (supondo que os dados tenham uma distribuição uniforme).
Quais são as fórmulas para
- O número total de combinações
- O número de combinações que totalizam um determinado número
probability
dice
Cruz
fonte
fonte
Respostas:
Soluções exatas
O número de combinações em jogadas é obviamente .n 6n
Esses cálculos são feitos com maior facilidade usando a função de geração de probabilidade para um dado,
(Na verdade, isso é vezes o pgf - cuidarei do fator no final.)6 6
O pgf para rolos é . Podemos calcular isso diretamente - não é um formulário fechado, mas é útil - usando o Teorema Binomial:n p(x)n
O número de maneiras de obter uma soma igual a nos dados é o coeficiente de neste produto, que podemos isolar comom xm
A soma é sobre todos os não-negativos e para os quais ; portanto, é finito e possui apenas cerca de termos. Por exemplo, o número de maneiras de totalizar em jogadas é uma soma de apenas dois termos, porque pode ser escrito apenas como e :k j 6k+j=m−n (m−n)/6 m=14 n=3 11=14−3 6⋅0+11 6⋅1+5
(Você também pode ser inteligente e observar que a resposta será a mesma para pela simetria 1 <--> 6, 2 <--> 5 e 3 <--> 4 e só há uma maneira de expandir como , ou seja, com e , dandom = 7 7 - 3 6 k + j k = 0 j = 4
Portanto, a probabilidade é igual a = , cerca de 14%.15 / 63 5 / 36
Quando isso fica doloroso, o Teorema do Limite Central fornece boas aproximações (pelo menos para os termos centrais em que está entre e : em uma base relativa, as aproximações que ele oferece para os valores de cauda pioram cada vez mais à medida que cresce).m 7 n2−3n−−√ 7n2+3n−−√ n
Vejo que essa fórmula é dada no artigo da Wikipedia, Srikant, mas não há justificativa, nem exemplos. Se por acaso essa abordagem parecer muito abstrata, inicie o sistema de álgebra de seu computador favorito e peça para expandir o poder de : você pode ler todo o conjunto de valores imediatamente. Por exemplo , um one-liner do Mathematica énth x+x2+⋯+x6
fonte
R
Clear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
Ainda outra maneira de calcular rapidamente a distribuição de probabilidade de um lançamento de dados seria usar uma calculadora especializada projetada apenas para esse fim.
Torben Mogensen , professor de CS na DIKU, possui um excelente rolador de dados chamado Troll .
O rolo de dados Troll e a calculadora de probabilidade imprimem a distribuição de probabilidade (pmf, histograma e opcionalmente cdf ou ccdf), média, spread e desvio médio para uma variedade de mecanismos complicados de lançamento de dados. Aqui estão alguns exemplos que mostram a linguagem dos dados de Troll:
Role 3 dados de 6 lados e resumi-los:
sum 3d6
.Rolar dados 4 6 lados, manter a mais alta 3 e resumi-los:
sum largest 3 4d6
.Rolar uma "explosão" die 6 lados (ou seja, sempre que um "6" trata-se, adicione 6 ao seu total and roll de novo):
sum (accumulate y:=d6 while y=6)
.O código-fonte SML da Troll está disponível, se você quiser ver como é implementado.
O professor Morgensen também tem um artigo de 29 páginas, " Mecanismos de Rolagem de Dados em RPGs ", no qual ele discute muitos dos mecanismos de rolagem de dados implementados por Troll e algumas das matemáticas por trás deles.
Uma peça similar de software livre e de código aberto é o Dicelab , que funciona tanto no Linux quanto no Windows.
fonte
Deixe o primeiro dado ser vermelho e o segundo preto. Existem 36 resultados possíveis:
Cada um desses resultados 36 ( ) é igualmente provável.red,black
Quando você soma os números nas faces (total em ), vários dos resultados (vermelho, preto) terminam com o mesmo total - você pode ver isso na tabela da sua pergunta.blue
Portanto, por exemplo, há apenas uma maneira de obter um total de ( por exemplo, apenas o evento ( )), mas há duas maneiras de obter (por exemplo, os eventos elementares ( ) e ( )). Portanto, um total de tem duas vezes mais chances de aparecer que . Da mesma forma, existem três maneiras de obter , quatro maneiras de obter e assim por diante.1 , 1 3 2 , 1 1 , 2 3 2 4 52 1,1 3 2,1 1,2 3 2 4 5
Agora que você tem 36 resultados possíveis (vermelho, preto), o número total de maneiras de obter todos os totais diferentes também é 36, portanto, você deve dividir por 36 no final. Sua probabilidade total será 1, como deveria ser.
fonte
Há uma maneira muito clara de calcular as combinações ou probabilidades em uma planilha (como o Excel) que calcula diretamente as convoluções.
Vou fazer isso em termos de probabilidades e ilustrá-lo por dados de seis lados, mas você pode fazê-lo por dados com qualquer número de lados (incluindo a adição de diferentes).
(btw também é fácil em algo como R ou matlab que fará convoluções)
Comece com uma planilha limpa, em algumas colunas, e desça várias linhas da parte superior (mais de 6).
coloque o valor 1 em uma célula. Essas são as probabilidades associadas a 0 dado. coloque um 0 à sua esquerda; essa é a coluna do valor - continue a partir daí com 1,2,3 abaixo, na medida do necessário.
mova uma coluna para a direita e desça uma linha do '1'. insira a fórmula "= soma (" seta para cima seta para a esquerda (para destacar a célula com 1), pressione ":" (para começar a inserir um intervalo) e seta para cima 5 vezes, seguida por ") / 6 "e pressione Enter - para que você acabe com uma fórmula como
=sum(c4:c9)/6
(ondeC9
está a célula com o 1 nela).Em seguida, copie a fórmula e cole-a nas 5 células abaixo dela. Cada um deles deve conter 0,16666 (ish).
Não digite nada nas células vazias às quais essas fórmulas se referem!
mova para baixo 1 e para a direita 1 a partir do topo dessa coluna de valores e cole ...
... um total de outros 11 valores. Essas serão as probabilidades de dois dados.
Não importa se você colar um pouco demais, obterá zeros.
repita o passo 3 para a coluna seguinte por três dados e novamente por quatro, cinco, etc.
Vemos aqui que a probabilidade de rolar em 4d6 é 0,096451 (se você multiplicar por poderá escrevê-lo como uma fração exata).4 612 46
Se você é adepto do Excel - coisas como copiar uma fórmula de uma célula e colar em muitas células de uma coluna, pode gerar todas as tabelas até 10d6 em cerca de um minuto (possivelmente mais rápido se você tiver feito isso poucas vezes).
Se você deseja contagens de combinações em vez de probabilidades, não divida por 6.
Se você quer dados com diferentes números de faces, pode somar (em vez de 6) células e depois dividir por . Você pode misturar dados entre colunas (por exemplo, faça uma coluna para d6 e uma para d8 para obter a função de probabilidade para d6 + d8):kk k
fonte
Solução Aproximada
Expliquei a solução exata anteriormente (veja abaixo). Agora vou oferecer uma solução aproximada que pode atender melhor às suas necessidades.
Deixei:
s i = 1 , . . . nXi é o resultado de um lançamento de um dado enfrentado onde .s i=1,...n
nS = total de todos os dados.n
Por definição, temos:
Em outras palavras,
A idéia agora é visualizar o processo de observar como o resultado de jogar o mesmo dado vezes, em vez de como o resultado de jogar dados. Assim, podemos invocar o teorema do limite central (ignorando os aspectos técnicos associados à passagem da distribuição discreta para a contínua), temos como : nnn→∞Xi n n n→∞
Onde,
O exposto acima é obviamente uma aproximação, pois a distribuição subjacente possui suporte discreto.Xi
Mas,
Assim, temos:
Solução exata
A Wikipedia tem uma breve explicação sobre como calcular as probabilidades necessárias. Vou elaborar um pouco mais sobre por que a explicação lá faz sentido. Na medida do possível, usei notação semelhante ao artigo da Wikipedia.
Suponha que você tenha dados cada um com faces e deseje calcular a probabilidade de que um único lançamento de todos os dados do total totalize . A abordagem é a seguinte:n s n k
Definir:
Por definição, temos:
O texto acima afirma que se você tiver apenas um dado com , a probabilidade de obter um total entre 1 e s é o familiar .s k 1s
Considere a situação ao jogar dois dados: Você pode obter uma soma de seguinte maneira: O primeiro lançamento está entre 1 e e o rolo correspondente para o segundo está entre e . Assim, temos:k k−1 k−1 1
Agora considere um lançamento de três dados: você pode obter uma soma de se rolar de 1 a no primeiro dado e a soma dos dois dados restantes estiver entre e . Portanto,k k−2 k−1 2
Continuando a lógica acima, obtemos a equação de recursão:
Veja o link da Wikipedia para mais detalhes.
fonte
Funções características podem facilitar a computação envolvendo somas e diferenças de variáveis aleatórias . O Mathematica tem muitas funções para trabalhar com distribuições estatísticas, incluindo um built-in para transformar uma distribuição em sua função característica.
Gostaria de ilustrar isso com dois exemplos concretos: (1) Suponha que você queira determinar os resultados de rolar uma coleção de dados com diferentes números de lados, por exemplo, rolar dois dados de seis lados mais um dado de oito lados (ou seja, , 2d6 + d8 )? Ou (2) suponha que você queira encontrar a diferença de dois lançamentos de dados (por exemplo, d6-d6 )?
Uma maneira fácil de fazer isso seria usar as funções características das distribuições uniformes discretas subjacentes. Se uma variável aleatória tem uma função de massa de probabilidade , então sua função característica é apenas a Transformada de Fourier discreta de , ou seja, . Um teorema nos diz:X f φX(t) f φX(t)=F{f}(t)=E[eitX]
Se as variáveis aleatórias independentes e têm funções de massa de probabilidade correspondentes e , então o pmf da soma desses RVs é a convolução de seus pmfs .X Y f g h X+Y h(n)=(f∗g)(n)=∑∞m=−∞f(m)g(n−m)
Podemos usar a propriedade de convolução das transformadas de Fourier para reafirmar isso mais simplesmente em termos de funções características:
A função característica da soma das variáveis aleatórias independentes e é igual ao produto de suas funções características .φX+Y(t) X Y φX(t)φY(t)
Essa função do Mathematica fará a função característica de um dado de face:
O pmf de uma distribuição pode ser recuperado de sua função característica, porque as transformadas de Fourier são invertíveis. Aqui está o código do Mathematica para fazer isso:
Continuando nosso exemplo, seja F o pmf resultante de 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Existem resultados. O domínio de suporte de F é . Três é o mínimo, porque você está jogando três dados. E vinte é o máximo porque . Se você quiser ver a imagem de F, calcule62⋅8=288 S={3,…,20} 20=2⋅6+8
Se você quiser saber o número de resultados que somam 10, calcule
Se as variáveis aleatórias independentes e têm funções de massa de probabilidade correspondentes e , então o pmf da diferença desses RVs é a correlação cruzada de seus pmfs .X Y f g h X−Y h(n)=(f⋆g)(n)=∑∞m=−∞f(m)g(n+m)
Podemos usar a propriedade de correlação cruzada das transformadas de Fourier para reafirmar isso mais simplesmente em termos de funções características:
A função característica da diferença de duas variáveis aleatórias independentes é igual ao produto da função característica e ( NB o sinal negativo na frente da variável t na segunda função característica).φX−Y(t) X,Y φX(t) φY(−t)
Portanto, usando o Mathematica para encontrar o pmf G de d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
Existem resultados. O domínio de suporte de G é . -5 é o mínimo porque . E 5 é o máximo porque . Se você quiser ver a imagem de G, calcule62=36 S={−5,…,5} −5=1−6 6−1=5
fonte
Aqui está outra maneira de calcular a distribuição de probabilidade da soma de dois dados manualmente, usando convoluções.
Para manter o exemplo realmente simples, vamos calcular a distribuição de probabilidade da soma de um dado de três lados (d3) cuja variável aleatória chamaremos de X e um dado de dois lados (d2) cuja variável aleatória ligue para Y.
Você vai fazer uma mesa. Na linha superior, escreva a distribuição de probabilidade de X (resultados de rolar um d3 razoável). Na coluna da esquerda, escreva a distribuição de probabilidade de Y (resultados de rolar um d2 justo).
Você construirá o produto externo da linha superior de probabilidades com a coluna esquerda de probabilidades. Por exemplo, a célula inferior direita será o produto de Pr [X = 3] = 1/3 vezes Pr [Y = 2] = 1/2, conforme mostrado na figura anexa. No nosso exemplo simplista, todas as células são iguais a 1/6.
Em seguida, você somará ao longo das linhas oblíquas da matriz do produto externo, conforme mostrado no diagrama anexo. Cada linha oblíqua passa por uma ou mais células com a mesma cor: a linha superior passa por uma célula azul, a próxima linha passa por duas células vermelhas e assim por diante.
Cada uma das somas ao longo dos oblíquos representa uma probabilidade na distribuição resultante. Por exemplo, a soma das células vermelhas é igual à probabilidade dos dois dados serem somados a 3. Essas probabilidades são mostradas no lado direito do diagrama que o acompanha.
Essa técnica pode ser usada com duas distribuições discretas com suporte finito. E você pode aplicá-lo iterativamente. Por exemplo, se você deseja conhecer a distribuição de três dados de seis lados (3d6), primeiro pode calcular 2d6 = d6 + d6; então 3d6 = d6 + 2d6.
Não é uma linguagem de programação livre (mas fechado licença) chamado J . É uma linguagem baseada em array com raízes no APL. Possui operadores internos para executar produtos externos e somas ao longo dos oblíquos das matrizes, tornando a técnica que ilustrei bastante simples de implementar.
No código J a seguir, defino dois verbos. Primeiro, o verbo
d
constrói uma matriz que representa o pmf de um dado de face dupla. Por exemplo,d 6
é o pmf de um dado de 6 lados. Segundo, o verboconv
encontra o produto externo de duas matrizes e somas ao longo das linhas oblíquas. Então,conv~ d 6
imprime o pmf de 2d6:Como você pode ver, J é enigmático, mas conciso.
fonte
Esta é realmente uma pergunta surpreendentemente complicada. Felizmente para você, existe uma solução exata que é muito bem explicada aqui:
http://mathworld.wolfram.com/Dice.html
A probabilidade que você está procurando é dada pela equação (10): "A probabilidade de obter p pontos (um rolo de p) em dados de n lados".
No seu caso: p = a pontuação observada (soma de todos os dados), n = o número de dados, s = 6 (dados de 6 lados). Isso fornece a seguinte função de massa de probabilidade:
fonte
Ame o nome de usuário! Bem feito :)
fonte
O primeiro limite para k na soma são os seis números anteriores. Por exemplo, se você quiser rolar 13 com 3 dados, poderá fazê-lo se seus dois primeiros dados rolarem entre 7 e 12.
O segundo limite para k no somatório é o limite do que você pode rolar com dados n-1
O resultado:
edit: A resposta acima foi uma resposta de outra pergunta que foi mesclada à pergunta por C.Ross
O código abaixo mostra como os cálculos para essa resposta (para a pergunta que pede 5 dados) foram realizados em R. Eles são semelhantes aos somatórios realizados no Excel na resposta de Glen B.
fonte
fonte