Zestaw Ω ( d , n )Ω(d,n) na różnych zidentyfikowania wyniki w nn niezależne rolki matrycy o d = 6d=6 powierzchniach ma d ndn elementów. Gdy kość jest sprawiedliwa, oznacza to, że każdy wynik jednego rzutu ma prawdopodobieństwo 1 / d,1/d a niezależność oznacza, że każdy z tych wyników będzie miał prawdopodobieństwo ( 1 / d ) n :(1/d)n: to znaczy, że mają one jednolity rozkład P d , n .Pd,n.
Załóżmy, że opracowałeś procedurę t,t która określa mm wyniki matrycy jednostronnej c ( = 150 )c(=150) - to znaczy element Ω ( c , m ) -Ω(c,m) lub w innym przypadku zgłasza awarię (co oznacza, że będziesz musiał powtórzyć w celu uzyskania wyniku). To jest,
t : Ω ( d , n ) → Ω ( c , m ) ∪ { Awaria } .t:Ω(d,n)→Ω(c,m)∪{Failure}.
Niech FF będzie prawdopodobieństwem tt skutkującym awarią i zwróć uwagę, że FF jest , powiedzmy , jakąś integralną wielokrotnością d - nd−n,
F = Pr ( t ( ω ) = Awaria ) = N Fd - n .F=Pr(t(ω)=Failure)=NFd−n.
(W celu odniesienia w przyszłości należy pamiętać, że oczekiwana liczba razy musi zostać wywołana przed niepowodzeniem to )t t1 / ( 1 - F ) .1/(1−F).
Wymaganie, że te wyniki w jest jednolite i niezależne uzależnione od niezgłoszenie środki awaryjnych, które konserwy prawdopodobieństwa w tym sensie, że dla każdego przypadkuΩ ( c , m )Ω(c,m)t tt tA ⊂ Ω ( c , m ) ,A⊂Ω(c,m),
P d , n ( t ∗ A )1 - F =Pc,m(A)Pd,n(t∗A)1−F=Pc,m(A)(1)
gdzie
t ∗ ( A ) = { ω ∈ Ω ∣ t ( ω ) ∈ A }t∗(A)={ω∈Ω∣t(ω)∈A}
jest zestawem rzutów matryc, które procedura przypisuje do zdarzeniat t.A.
Rozważmy zdarzenie atomowe , które musi mieć prawdopodobieństwoNiech (rzuty kostką związane z ) mają elementy . staje sięA = { η } ⊂ Ω ( 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)
Natychmiastowe jest, że są równe jakiejś liczbie całkowitejNηNηN.N. Pozostaje tylko znaleźć najbardziej efektywne procedury Oczekiwana liczba nie-awarii na zwoju kostka ISt.t.cc
1m(1−F).1m(1−F).
Istnieją dwie bezpośrednie i oczywiste implikacje. Jednym z nich jest to, że jeśli możemy utrzymać małą, gdy rośnie, to efekt zgłoszenia awarii jest asymptotycznie zerowy. Drugim jest to, że dla dowolnego danego (liczby rzutów matrycy po stronie do symulacji) chcemy, aby jak najmniejsze.FFmmmmccFF
Przyjrzyjmy się bliżej , usuwając mianowniki:(2)(2)
Ncm=dn−NF>0.Ncm=dn−NF>0.
To pokazuje, że w danym kontekście (określonym przez ), jest tak małe, jak to możliwe, czyniąc równą największej wielokrotności która jest mniejsza lub równa Możemy napisać to w kategoriach największej liczby całkowitej (lub „floor”) asc,d,n,mc,d,n,mFFdn−NFdn−NFcmcmdn.dn.⌊∗⌋⌊∗⌋
N=⌊dncm⌋.N=⌊dncm⌋.
Wreszcie, oczywiste jest, że powinna być jak najmniejsza dla najwyższej wydajności, ponieważ mierzy redundancję w . W szczególności, oczekiwana liczba walców -sided formy potrzebne do wytworzenia jednego zwoju -sided dyszowej mieściNNttddcc
N×nm×11−F.N×nm×11−F.
Dlatego nasze poszukiwania procedur o wysokiej wydajności powinny koncentrować się na przypadkach, w których jest równe lub tylko nieco większe od pewnej mocydndncm.cm.
Analiza kończy się wykazaniem, że dla danych i istnieje ciąg wielokrotności dla którego to podejście jest zbliżone do idealnej wydajności. Sprowadza się to do znalezienia dla którego zbliża się do w limicie (automatycznie gwarantując ). Jedną taką sekwencję uzyskuje się, przyjmując i określającddc,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)
Dowód jest prosty.
To, że wszystkie środki, które, gdy są gotowe do użycia oryginalnego -sided die wystarczająco dużą liczbę można oczekiwać, aby symulować prawie EFEKTY -sided umiera na rolce . Równoważnieddn,n,logd/logc=logcdlogd/logc=logcdcc
Jest możliwe, aby symulować duża ilość niezależnych rolkach o -sided matrycy z wykorzystaniem sprawiedliwego -sided matrycy z wykorzystaniem średnio rzutuje na wynik, gdzie może być dowolnie mały, wybierając odpowiednio duży.mmccddlog(c)/log(d)+ϵ=logd(c)+ϵlog(c)/log(d)+ϵ=logd(c)+ϵϵϵmm
Przykłady i algorytmy
Na pytanie, i skądd=6d=6c=150,c=150,
logd(c)=log(c)log(d)≈2.796489.logd(c)=log(c)log(d)≈2.796489.
Zatem najlepsza możliwa procedura będzie wymagała średnio co najmniej rolek a, aby zasymulować każdy wynik.2.7964892.796489d6
d150
Analiza pokazuje, jak to zrobić. Aby tego dokonać, nie musimy uciekać się do teorii liczb: możemy po prostu zestawić moce d n = 6 ndn=6n i moce c m = 150 mcm=150m i porównać je, aby znaleźć, gdzie c m ≤ d ncm≤dn są bliskie. To obliczenie brutalnej siły daje ( n(n,m)pary , m )
( n , m ) ∈ { ( 3 , 1 ) , ( 14 , 5 ) , … }(n,m)∈{(3,1),(14,5),…}
na przykład odpowiadający liczbom
( 6 n , 150 m ) ∈ { ( 216 , 150 ) , ( 78364164096 , 75937500000 ) , … } .(6n,150m)∈{(216,150),(78364164096,75937500000),…}.
W pierwszym przypadku tt kojarzyłoby 216 - 150 = 66216−150=66 wyników trzech rzutów a d6
do porażki, a pozostałe 150150 wyników byłoby związane z jednym wynikiem a d150
.
W drugim przypadku tt kojarzyłoby 78364164096 - 7593750000078364164096−75937500000 wyników 14 rzutów zd6
awarią - około 3,1% wszystkich - i w innym przypadku dałoby sekwencję 5 wyników ad150
.
Proste do wykonania algorytmu tt etykiet twarze dd -sided umiera z liczb 0 , 1 , ... , d - 10,1,…,d−1 i powierzchniami Cc -sided umiera z liczb 0 , 1 , ... , C - 1. 0,1,…,c−1.nn rzutów z pierwszej kości jest interpretowanych jako liczba n-n cyfrowa w podstawie d . d. To jest konwertowane na liczbę w bazie c . c. Jeśli ma co najwyżej mm cyfr, sekwencja ostatniego mm cyfr, jest to wynik. Inaczej, tt zwraca błąd, wywołując rekurencyjnie.
W przypadku znacznie dłuższych sekwencji można znaleźć odpowiednie pary ( n , m )(n,m) , biorąc pod uwagę każdą inną zbieżną n / mn/m kontynuacji rozszerzenia ułamka x = log ( c ) / log ( d ) . x=log(c)/log(d). Teoria ciągłych ułamków pokazuje, że te zbieżności występują naprzemiennie między byciem mniejszym niż xx i większym niż to (zakładając, że xx nie jest już racjonalny). Wybierz te, które są mniejsze niż x .x.
In the question, the first few such convergents are
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….
In the last case, a sequence of 29,036,139 rolls of a d6
will produce a sequence of 10,383,070 rolls of a d150
with a failure rate less than 2×10−8,2×10−8, for an efficiency of 2.796492.79649--indistinguishable from the asymptotic limit.