O conjunto de resultados identificáveis distintos em rolos independentes de um dado com faces possui elementos. Quando o dado é justo, isso significa que cada resultado de uma jogada tem probabilidade independência significa que cada um desses resultados terá probabilidade isto é, eles têm uma distribuição uniformeΩ(d,n)nd=6dn1/d(1/d)n:Pd,n.
Suponha que você tenha planejado algum procedimento que determine resultados de um dado de lado - ou seja, um elemento de - ou então relate falha (o que significa que você terá que repita para obter um resultado). Isso é,tmc(=150)Ω(c,m)
t:Ω(d,n)→Ω(c,m)∪{Failure}.
Seja a probabilidade resulta em falha e observe que é algum múltiplo integral de digamosFtFd−n,
F=Pr(t(ω)=Failure)=NFd−n.
(Para referência futura, observe que o número esperado de vezes que deve ser chamado antes de não falhar é )t1/(1−F).
A exigência de que esses resultados em ser uniforme e independente condicional em não relatar meios de falha que conservas probabilidade no sentido de que para cada eventoΩ(c,m)t t Um ⊂ Ω ( c , m ) ,ttA⊂Ω(c,m),
Pd,n(t∗A)1−F=Pc,m(A)(1)
Onde
t∗(A)={ω∈Ω∣t(ω)∈A}
é o conjunto de dados que o procedimento atribui ao eventotA.
Considere um evento atômico , que deve ter probabilidadeDeixe (os dados associados a ) possuem elementos. torna-seA={η}⊂Ω(c,m)c−m.t∗(A)ηNη(1)
Nηd−n1−NFd−n=Pd,n(t∗A)1−F=Pc,m(A)=c−m.(2)
É imediato que os sejam todos iguais a um número inteiroNηN. Resta apenas encontrar os procedimentos mais eficientes O número esperado de falhas não por rolo do sided die sejat.cc
1m(1−F).
Existem duas implicações imediatas e óbvias. Uma é que, se podemos manter pequeno à medida que cresce, o efeito de relatar uma falha é assintoticamente zero. A outra é que, para qualquer dado (o número de jogadas do dado do lado para simular), queremos tornar o menor possível.FmmcF
Vamos dar uma olhada em limpando os denominadores:(2)
Ncm=dn−NF>0.
Isso torna óbvio que, em um determinado contexto (determinado por ), seja o menor possível, tornando igual ao maior múltiplo de que seja menor ou igual a Podemos escrever isso em termos da maior função inteira (ou "piso") comoc,d,n,mFdn−NFcmdn.⌊∗⌋
N=⌊dncm⌋.
Por fim, fica claro que deve ser o menor possível para obter maior eficiência, pois mede a redundância em . Especificamente, o número esperado de rolos da matriz do lado necessário para produzir um rolo da matriz do lado éNt d ctdc
N×nm×11−F.
Assim, nossa busca por procedimentos de alta eficiência deve focar nos casos em que é igual a, ou apenas pouco maior que, algum poderdncm.
A análise termina mostrando que, para dados de e há uma sequência de múltiplos para a qual essa abordagem se aproxima da eficiência perfeita. Isso equivale a encontrar para o qual aproxima de no limite (garantindo automaticamente ). Uma dessas seqüências é obtida tomando e determinandodc,(n,m)(n,m)dn/cm≥1N=1F→0n=1,2,3,…
m=⌊nlogdlogc⌋.(3)
A prova é direta.
Tudo isso significa que, quando estivermos dispostos a rolar o dado original com lados um número suficientemente grande de vezes podemos esperar simular quase resultados de um dado com lado por rolo . Equivalentemente,dn,logd/logc=logcdc
É possível simular um grande número de rolos independentes de um -sided morrer utilizando uma feira -sided morrer utilizando uma média de rola por resultado, onde pode ser arbitrariamente pequeno, escolhendo suficientemente grande.mcdlog(c)/log(d)+ϵ=logd(c)+ϵϵm
Exemplos e algoritmos
Na questão, e donded=6c=150,
logd(c)=log(c)log(d)≈2.796489.
Assim, o melhor procedimento possível exigirá, em média, pelo menos rolos de a para simular cada resultado.2.796489d6
d150
A análise mostra como fazer isso. Não precisamos recorrer à teoria dos números para realizá-la: podemos apenas tabular as potências e as potências compará-las para descobrir onde estão próximos. Este cálculo da força bruta fornece paresdn=6ncm=150mcm≤dn(n,m)
(n,m)∈{(3,1),(14,5),…}
por exemplo, correspondendo aos números
(6n,150m)∈{(216,150),(78364164096,75937500000),…}.
No primeiro caso iria associar dos resultados de três rolos da falha e os outros resultados que cada ser associado com um único resultado de um . t216−150=66150d6
150d150
No segundo caso, associaria dos resultados de 14 de a a Failure - cerca de 3,1% de todos - e produziria uma sequência de 5 resultados de a .t78364164096−75937500000d6
d150
Um algoritmo simples para implementart rotula as faces da matriz lado com os números e as faces da matriz lado com os números Os rolos do primeiro dado são interpretados como um número de dígitos na base Isso é convertido em um número na base Se tiver no máximo dígitos, a sequência dos últimos dígitos será a saída. Caso contrário, retorna Fail ao invocar-se recursivamente.d0,1,…,d−1c0,1,…,c−1.nnd.c.mmt
Para seqüências muito mais longas, é possível encontrar pares adequados considerando todos os outros convergentes da expansão contínua da fração de A teoria das frações contínuas mostra que esses convergentes alternam entre ser menor que e maior que ele (supondo que ainda não seja racional). Escolha aqueles que são menores que(n,m)n/mx=log(c)/log(d).xxx.
Na questão, os primeiros poucos convergentes são
3,14/5,165/59,797/285,4301/1538,89043/31841,279235/99852,29036139/10383070….
No último caso, uma sequência de 29.036.139 jogadas de a d6
produzirá uma sequência de 10.383.070 jogadas de a d150
com uma taxa de falha menor que para uma eficiência de indistinguível do limite assintótico.2×10−8,2.79649