El conjunto Ω ( d , n )Ω(d,n) de resultados identificables distintos en nn tiradas independientes de un dado con d = 6d=6 caras tiene d ndn elementos. Cuando el dado es justo, eso significa que cada resultado de una tirada tiene probabilidad 1 / dy1/d independencia significa que cada uno de estos resultados tendrá, por lo tanto, probabilidad ( 1 / d ) n :(1/d)n: es decir, tienen una distribución uniforme P d , n .Pd,n.
Suponga que ha ideado algún procedimiento tt que determina mm resultados de un dado de c ( = 150 )c(=150) , es decir, un elemento de Ω ( c , m ),Ω(c,m) o bien informa un fallo (lo que significa que tendrá que repetir para obtener un resultado). Es decir,
t : Ω ( d , n ) → Ω ( c , m ) ∪ { Fallo } .t:Ω(d,n)→Ω(c,m)∪{Failure}.
Sea FF la probabilidad de que tt resulte en una falla y tenga en cuenta que FF es un múltiplo integral de d - n ,d−n, digamos
F = Pr ( t ( ω ) = Falla ) = N Fd - n .F=Pr(t(ω)=Failure)=NFd−n.
(Para referencia futura, nota que el número esperado de veces debe invocar antes de fallar no es )t t1 / ( 1 - F ) .1/(1−F).
El requisito de que estos resultados en sean uniformes e independiente condicional en no informar medios de fallo que conservas probabilidad en el sentido de que para cada eventoΩ ( c , m ) Ω(c,m)t t A ⊂ Ω ( c , m ) ,ttA⊂Ω(c,m),
P d , n ( t ∗ A )1 - F =Pc,m(A)Pd,n(t∗A)1−F=Pc,m(A)(1)
dónde
t ∗ ( A ) = { ω ∈ Ω ∣ t ( ω ) ∈ A }t∗(A)={ω∈Ω∣t(ω)∈A}
es el conjunto de tiradas de dado que el procedimiento asigna al eventot tA .A.
Considere un evento atómico , que debe tener una probabilidadDeje que (las tiradas de dados asociadas con ) tienen elementos . convierteA = { η } ⊂ Ω ( c , m ) A={η}⊂Ω(c,m)c - m . c−m.t ∗ ( A )t∗(A) ηη N ηNη ( 1 )(1)
N η d - n1 - N F d - n = P d , 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)
Es inmediato que los son todos iguales a algún número enteroN ηNη N . N.t . C Solo queda encontrar los procedimientos más eficientes El número esperado de no fallas por tirada del dado est.c
1metro ( 1 - F ) .1m(1−F).
Hay dos implicaciones inmediatas y obvias. Una es que si podemos mantener pequeño a medida que crece, entonces el efecto de informar una falla es asintóticamente cero. La otra es que para cualquier dada (el número de tiradas del dado para simular), queremos que más pequeño posible.F Fmm m mc cFF
Echemos un vistazo más de cerca a borrando los denominadores:( 2 )(2)
N c m = d n - N F > 0.Ncm=dn−NF>0.
Esto hace obvio que en un contexto dado (determinado por ), se hace lo más pequeño posible haciendo que igual al múltiplo más grande de que sea menor o igual que Podemos escribir esto en términos de la función entera más grande (o "piso") comoc , d , n , m c,d,n,mF Fd n - N F dn−NFc m cmd n . dn.⌊ ∗ ⌋⌊∗⌋
N = ⌊ d nc m ⌋.N=⌊dncm⌋.
Finalmente, está claro que debe ser lo más pequeño posible para lograr la mayor eficiencia, ya que mide la redundancia en . Específicamente, el número esperado de tiradas del dado de lado necesario para producir un lanzamiento del dado de lado esN Nt d ctdc
N × nm ×11 - F .N×nm×11−F.
Por lo tanto, nuestra búsqueda de procedimientos de alta eficiencia debería centrarse en los casos en que es igual o apenas mayor que alguna potenciad n dnc m .cm.
El análisis termina mostrando que para y dados hay una secuencia de múltiplos para los cuales este enfoque se aproxima a la eficiencia perfecta. Esto equivale a encontrar para el cual acerca a en el límite (garantizando automáticamente ). Una de estas secuencias se obtiene tomando y determinandod dc , c,( n , m ) (n,m)( n , m ) (n,m)d n / c m ≥ 1 dn/cm≥1N = 1 N=1F → 0 F→0n = 1 , 2 , 3 , …n=1,2,3,…
m = ⌊ n log dlog c ⌋.m=⌊nlogdlogc⌋.(3)
La prueba es sencilla.
Todo esto significa que cuando estamos dispuestos a tirar el dado original sided un número suficientemente grande de veces podemos esperar simular casi resultados de un dado sided por tirada . Equivalentemented dn , n,log d / log c = log c d logd/logc=logcdcc
Es posible simular un gran número de tiradas independientes de un dado de utilizando un dado de justo usando un promedio de pasa por resultado donde puede hacerse arbitrariamente pequeño eligiendo suficientemente grande.m mc cd dlog ( c ) / log ( d ) + ϵ = log d ( c ) + ϵ log(c)/log(d)+ϵ=logd(c)+ϵϵ ϵmm
Ejemplos y algoritmos
En la pregunta, y de donded = 6 d=6c = 150 ,c=150,
log d ( c ) = log ( c )log ( d ) ≈2.796489.logd(c)=log(c)log(d)≈2.796489.
Por lo tanto, el mejor procedimiento posible requerirá, en promedio, al menos rollos de a para simular cada resultado.2.7964892.796489d6
d150
El análisis muestra cómo hacer esto. No necesitamos recurrir a la teoría de números para llevarla a cabo: podemos tabular las potencias las potencias y compararlas para encontrar dónde están cerca. Este cálculo de fuerza bruta da paresd n = 6 n dn=6nc m = 150 mcm=150m c m ≤ d ncm≤dn ( n , m )(n,m)
( n , m ) ∈ { ( 3 , 1 ) , ( 14 , 5 ) , … }(n,m)∈{(3,1),(14,5),…}
por ejemplo, correspondiente a los números
( 6 n , 150 m ) ∈ { ( 216 , 150 ) , ( 78364164096 , 75937500000 ) , ... } .(6n,150m)∈{(216,150),(78364164096,75937500000),…}.
En el primer caso, asociaría de los resultados de tres tiradas de a a Fracaso y los otros resultados se asociarían a un único resultado de a . t t216 - 150 = 66 216−150=66d6
150150d150
En el segundo caso, asociaría de los resultados de 14 tiradas de a a Fracaso, alrededor del 3,1% de todas ellas, y de lo contrario generaría una secuencia de 5 resultados de a .t t78364164096 - 7593750000078364164096−75937500000d6
d150
Un algoritmo simple para implementartt etiqueta las caras del dado con lados con los números y las caras del dado con lados con los números Las tiradas del primer dado se interpretan como un número de dígitos en la base Esto se convierte en un número en la base Si tiene como máximo dígitos, la secuencia de los últimos dígitos es la salida. De lo contrario, devuelve Fallo invocando recursivamente.dd0,1,…,d−10,1,…,d−1cc0,1,…,c−1.0,1,…,c−1.nnnnd.d.c.c.mmmmtt
Para secuencias mucho más largas, puede encontrar pares adecuados considerando cualquier otro convergente de la expansión de fracción continua de La teoría de las fracciones continuas muestra que estos convergentes alternan entre ser menor que y mayor que él (suponiendo que ya no es racional). Elija aquellos que son menores que(n,m)(n,m)n/mn/mx=log(c)/log(d).x=log(c)/log(d).xxxxx.x.
En la pregunta, los primeros convergentes son
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….
En el último caso, una secuencia de 29,036,139 rollos de a d6
producirá una secuencia de 10,383,070 rollos de a d150
con una tasa de falla menor a para una eficiencia de indistinguible del límite asintótico.2×10−8,2×10−8,2.796492.79649
Para el caso de , tirar un d6 tres veces claramente crea resultados.N=150N=150 63=21663=216
El resultado deseado se puede tabular de esta manera:
La probabilidad de mantener un resultado es . Todos los rollos son independientes, y repetimos el procedimiento hasta un "éxito" (un resultado en ) por lo que el número de intentos de generar 1 empate entre 1 y 150 se distribuye como una variable aleatoria geométrica, que tiene expectativa . Por lo tanto, usar este método para generar 1 sorteo requiere tirar tiradas de dados en promedio (porque cada intento tira 3 dados).p=150216=2536p=150216=2536 1,2,…,1501,2,…,150 p−1=3625p−1=3625 3625×3=4.323625×3=4.32
Gracias a @whuber por sugerir esto en el chat.
fuente
Aquí hay una alternativa aún más simple a la respuesta de Sycorax para el caso donde . Desde puede realizar el siguiente procedimiento:N=150N=150 150=5×5×6150=5×5×6
Este método puede generalizarse a más grande , pero se vuelve un poco más incómodo cuando el valor tiene uno o más factores primos mayores que .NN 66
fuente
Como ilustración de un algoritmo para elegir uniformemente entre valores usando dados de seis lados, intente esto que usa cada tirada para multiplicar los valores disponibles por y hacer que cada uno de los nuevos valores sea igualmente probable:150150 66
Si está en uno de los valores restantes después de lanzamientos, entonces se encuentra en una situación similar a la posición después de lanzamiento. Entonces puede continuar de la misma manera: la probabilidad de detenerse después de tiradas es , después de tiradas es etc.6 6 1 7 0279936 81501679616
Sume estos y encontrará que el número esperado de rollos necesarios es de aproximadamente . Proporciona una selección uniforme de los , ya que solo selecciona un valor a la vez cuando puede seleccionar cada uno de los con la misma probabilidad3.39614 150 150
Sycorax pidió en los comentarios un algoritmo más explícito
El algoritmo es sucesivos lanzamientos de dados:
Tira los primeros tres dados para generar un número de 000 6 a 555 6 . Como 1000 6 ÷ 410 6 = 1 6 resto 150 6 , toma el valor generado (que también es su resto en la división entre 410 6 ) si el valor generado está estrictamente por debajo de 1000 6 - 150 6 = 410 6 y se detiene;
Si continúa, tire el cuarto dado para que haya generado un número de 4100 6 a 5555 6 . Como 10000 6 ÷ 410 6 = 12 6 resto 240 6 , toma el resto del valor generado en la división entre 410 6 si el valor generado está estrictamente por debajo de 10000 6 - 240 6 = 5320 6 y se detiene;
Si continúa, tire el quinto dado para que haya generado un número de 53200 6 a 55555 6 . Como 100000 6 ÷ 410 6 = 123 6 resto 330 6 , toma el resto del valor generado en la división entre 410 6 si el valor generado está estrictamente por debajo de 100000 6 - 330 6 = 55230 6 y se detiene;
Si continúa, tire el sexto dado para que haya generado un número de 552300 6 a 555555 6 . Como 1000000 6 ÷ 410 6 = 1235 6 resto 10 6 , toma el resto del valor generado en la división entre 410 6 si el valor generado está estrictamente por debajo de 1000000 6 - 10 6 = 555550 6 y se detiene;
etc.
fuente