L'insieme Ω ( d , n )Ω(d,n) di risultati identificabili distinti in nn tiri indipendenti di un dado con d = 6d=6 facce ha d ndn elementi. Quando il dado è giusto, ciò significa che ogni risultato di un tiro ha probabilità 1 / d1/d e l'indipendenza significa che ciascuno di questi risultati avrà quindi probabilità ( 1 / d ) n :(1/d)n: cioè, hanno una distribuzione uniforme P d , n .Pd,n.
Supponiamo che tu abbia escogitato una procedura tt che determini mm esiti di un dado con lato c ( = 150 )c(=150) - cioè un elemento di Ω ( c , m ) -Ω(c,m) oppure segnala un fallimento (il che significa che dovrai ripetere per ottenere un risultato). Questo è,
t : Ω ( d , n ) → Ω ( c , m ) ∪ { Errore } .t:Ω(d,n)→Ω(c,m)∪{Failure}.
Sia FF la probabilità traduca in un fallimento e si noti che è un multiplo integrale di diciamottFFd−n,d−n,
F=Pr(t(ω)=Failure)=NFd−n.F=Pr(t(ω)=Failure)=NFd−n.
(Per riferimento futuro, si noti che il numero previsto di volte che deve essere invocato prima di non fallire è )tt1/(1−F).1/(1−F).
Il requisito che questi risultati in siano uniformi e indipendenti condizionale sulla non denunciare i mezzi di guasto che conserve probabilità, nel senso che per ogni eventoΩ(c,m)Ω(c,m)ttttA⊂Ω(c,m),A⊂Ω(c,m),
Pd,n(t∗A)1−F=Pc,m(A)Pd,n(t∗A)1−F=Pc,m(A)(1)
dove
t∗(A)={ω∈Ω∣t(ω)∈A}t∗(A)={ω∈Ω∣t(ω)∈A}
è l'insieme dei tiri di dado che la procedura assegna all'eventottA.A.
Considera un evento atomico , che deve avere probabilitàSia (i tiri di dado associati a ) hanno elementi . diventaA={η}⊂Ω(c,m)A={η}⊂Ω(c,m)c−m.c−m.t∗(A)t∗(A)ηηNηNη(1)(1)
Nηd−n1−NFd−n=Pd,n(t∗A)1−F=Pc,m(A)=c−m.Nηd−n1−NFd−n=Pd,n(t∗A)1−F=Pc,m(A)=c−m.(2)
È immediato che siano tutti uguali a un numero interoNηNηN.N. Resta solo da trovare le procedure più efficienti Il numero atteso di non guasti per rullo del lati dado ISt.t.cc
1m(1−F).1m(1−F).
Ci sono due implicazioni immediate e ovvie. Uno è che se riusciamo a mantenere piccola man mano che cresce, l'effetto della segnalazione di un errore è asintoticamente zero. L'altro è che per ogni dato (il numero di lanci del dado a per simulare), vogliamo rendere più piccolo possibile.FFmmmmccFF
Diamo un'occhiata più da vicino a cancellando i denominatori:(2)(2)
Ncm=dn−NF>0.Ncm=dn−NF>0.
Ciò rende ovvio che in un determinato contesto (determinato da ), viene reso il più piccolo possibile rendendo uguale al multiplo più grande di che è minore o uguale a Possiamo scrivere questo in termini della più grande funzione intera (o "piano") comec,d,n,mc,d,n,mFFdn−NFdn−NFcmcmdn.dn.⌊∗⌋⌊∗⌋
N=⌊dncm⌋.N=⌊dncm⌋.
Infine, è chiaro che dovrebbe essere il più piccolo possibile per la massima efficienza, perché misura la ridondanza in . In particolare, il numero previsto di rotoli del dado lato necessario per produrre un rotolo del dado lato èNNttddcc
N×nm×11−F.N×nm×11−F.
Pertanto, la nostra ricerca di procedure ad alta efficienza dovrebbe concentrarsi sui casi in cui è uguale o appena maggiore di un certo poteredndncm.cm.
L'analisi termina mostrando che per un dato e c'è una sequenza di multipli per i quali questo approccio approssima la perfetta efficienza. Ciò equivale a trovare per cui avvicina a nel limite (garantendo automaticamente ). Una di queste sequenze si ottiene prendendo e determinandoddc,c,(n,m)(n,m)(n,m)(n,m)dn/cm≥1dn/cm≥1N=1N=1F→0F→0n=1,2,3,…n=1,2,3,…
m=⌊nlogdlogc⌋.m=⌊nlogdlogc⌋.(3)
La prova è semplice.
Tutto ciò significa che quando siamo disposti a lanciare il dado a faccia di originale un numero sufficientemente grande di volte possiamo aspettarci di simulare quasi risultati di un dado a faccia per tiro . Equivalentemente,ddn,n,logd/logc=logcdlogd/logc=logcdcc
È possibile simulare un gran numero di rotoli indipendenti di senso unico stampo utilizzando un equo sided die utilizzando una media di lancia per risultato dove può essere reso arbitrariamente piccolo scegliendo sufficientemente grande.mmccddlog(c)/log(d)+ϵ=logd(c)+ϵlog(c)/log(d)+ϵ=logd(c)+ϵϵϵmm
Esempi e algoritmi
Nella domanda, e donded=6d=6c=150,c=150,
logd(c)=log(c)log(d)≈2.796489.logd(c)=log(c)log(d)≈2.796489.
Pertanto, la migliore procedura possibile richiederà, in media, almeno tiri di a per simulare ogni risultato.2.7964892.796489d6
d150
L'analisi mostra come farlo. Non abbiamo bisogno di ricorrere alla teoria dei numeri per realizzarla: possiamo semplicemente tabulare i poteri e i poteri e confrontarli per trovare dove sono vicini. Questo calcolo della forza bruta fornisce coppiedn=6ndn=6ncm=150mcm=150mcm≤dncm≤dn(n,m)(n,m)
(n,m)∈{(3,1),(14,5),…}(n,m)∈{(3,1),(14,5),…}
per esempio, corrispondente ai numeri
(6n,150m)∈{(216,150),(78364164096,75937500000),…}.(6n,150m)∈{(216,150),(78364164096,75937500000),…}.
Nel primo caso vedrebbe associato dei risultati di tre rotoli al fallimento e gli altri risultati sarebbero ciascuno associato con un singolo risultato di una . tt216−150=66216−150=66d6
150150d150
Nel secondo caso vedrebbe associato dei risultati di 14 rotoli di guasto - circa 3,1% di tutti - e altrimenti sarebbe uscita una sequenza di 5 risultati di uno .tt78364164096−7593750000078364164096−75937500000d6
d150
Un semplice algoritmo per implementarett identifica le facce del dado con lato con i numeri e le facce del dado con lato con i numeri Gli tiri del primo dado sono interpretati come un numero -digit nella base Questo viene convertito in un numero in base Se ha al massimo cifre, la sequenza delle ultime cifre è l'output. Altrimenti, restituisce Fallimento invocando se stesso in modo ricorsivo.dd0,1,…,d−10,1,…,d−1cc0,1,…,c−1.0,1,…,c−1.nnnnd.d.c.c.mmmmtt
Per sequenze molto più lunghe, puoi trovare coppie adatte considerando ogni altro convergente dell'espansione della frazione continua di La teoria delle frazioni continue mostra che questi convergenti si alternano tra essere inferiore a e maggiore di esso (supponendo che non sia già razionale). Scegli quelli che sono meno di(n,m)(n,m)n/mn/mx=log(c)/log(d).x=log(c)/log(d).xxxxx.x.
Nella domanda, i primi pochi di questi convergenti sono
3,14/5,165/59,797/285,4301/1538,89043/31841,279235/99852,29036139/10383070….3,14/5,165/59,797/285,4301/1538,89043/31841,279235/99852,29036139/10383070….
Nell'ultimo caso, una sequenza di 29.036.139 rotoli di a d6
produrrà una sequenza di 10.383.070 rotoli di a d150
con un tasso di fallimento inferiore a per un'efficienza di distinguibile dal limite asintotico.2×10−8,2×10−8,2.796492.79649