82 votos

¿Cómo generar un número aleatorio entre 1 y 10 con un dado de seis caras?

Sólo por diversión, estoy tratando de encontrar un buen método para generar un número aleatorio entre 1 y 10 (uniforme) con un imparcial de seis caras morir.

He encontrado una manera, pero es posible que requiere una gran cantidad de pasos antes de llegar el número, así que me preguntaba si hay métodos más eficaces.

Mi método:

  1. Tirar el dado y llamar al resultado de $n$. Si $1\leq n\leq 3$ su número será de entre $1$ y $5$ y si $4\leq n\leq 6$ su número será de entre $6$ y $de$ 10. Por lo tanto, hemos reducido el problema de la generación de un número aleatorio entre $1$ y $5$.
  2. Ahora, para obtener un número de entre $1$ y $5$, tirar el dado cinco veces. Si el $i$th tirar obtuvo el mayor resultado, tome su número será de $i$. Si no hay mayor resultado, empezar de nuevo hasta que hay.

El problema es que aunque la probabilidad de que al final habrá un mayor resultado es $1$, que podría tomar un tiempo antes de llegar.

Es allí una manera más eficiente que requiere sólo algunos fija el número de pasos? Edit: O si no es posible, un método con un menor número esperado de rollos?

101voto

Roger Hoover Puntos 56

Usted puede lanzar el dado muchos ($N$) veces, tomar la suma de los resultados y considerar el residuo de la clase $\pmod{10}$. La distribución en $[1,10]$ acercarse más y más a una distribución uniforme $$ N aumenta.


Usted puede lanzar el dado una vez para decidir si el resultado final va a ser par o impar, a continuación, tira de nuevo, hasta da un resultado diferente de seis, que corrige el residuo de la clase $\pmod{5}$. De tal manera de generar una distribución uniforme de más de $[1,10]$ $\frac{11}{5}=\color{red}{2.2}$ tiros, en promedio.


Si se le permite lanzar el dado en una cuña, puede que la etiqueta de los bordes de la placa con los números en $[1,10]$ y marca los dos bordes opuestos como "rebollo". De tal manera de salvar exactamente una sacudida, y la necesidad de sólo $\color{red}{1.2}$ tiros, en promedio.


Obviamente, si se le permite lanzar el dado en decagonal de cristal, usted ni siquiera necesita el morir, pero en tal caso, el pensamiento lateral spree termina con sólo $\color{red}{1}$ sorteo. No se diferencia mucho de la compra de un D10, como Travis sugerido.


En el pasado, sólo por diversión: mira el morir, sin tirar de él. A continuación, mira su reloj, el último dígito de los segundos. Agregar uno. $\color{red}{0}$ lanzamientos.

40voto

NovaDenizen Puntos 2578

Escribir fuera de la base-$6$ decimales de $\frac{0}{10}$ con $\frac{10}{10}$.

$$\begin{array}{cc} \frac{0}{10} & = 0.00000000\puntos\\ \frac{1}{10} & = 0.03333333\puntos\\ \frac{2}{10} & = 0.11111111\puntos\\ \frac{3}{10} & = 0.14444444\puntos\\ \frac{4}{10} & = 0.22222222\puntos\\ \frac{5}{10} & = 0.30000000\puntos\\ \frac{6}{10} & = 0.33333333\puntos\\ \frac{7}{10} & = 0.41111111\puntos\\ \frac{8}{10} & = 0.44444444\puntos\\ \frac{9}{10} & = 0.52222222\puntos\\ \frac{10}{10} & = 1.00000000\puntos\\ \end{array}$$

El tratamiento de rollos de $6$ como $0$. Al pasar el $6$colindado mueren, son la generación de los dígitos de un base-$6$ de número decimal, distribuidos de manera uniforme entre $0$ y $1$. Hay $10$ brechas entre las fracciones para $\frac{x}{10}$, correspondiente a los $10$ uniformemente al azar los resultados que usted está buscando. Usted sabe que el resultado va a generar tan pronto como usted sepa que la brecha en el número aleatorio.

Esta es una especie de molesto a hacer. Aquí el equivalente en un algoritmo:

Se lanza un dado $$\begin{array}{c|c} 1 & A(0,1)\\ 2 & B(1,2,3)\\ 3 & a(4,3)\\ 4(5,6)\\ 5 & B(6,7,8)\\ 6 & a(9,8)\\ \end{array}$$ $A(x,y)$: se lanza un dado $$\begin{array}{c|c} 1,2,3 & x\\ 4 & A(x,y)\\ 5,6 & y\\ \end{array}$$ $B(x,y,z)$: se lanza un dado $$\begin{array}{c|c} 1 & x\\ 2 & C(x,y)\\ 3,4 & y\\ 5 & C(z,y)\\ 6 & z\\ \end{array}$$ $C(x,y)$: se lanza un dado $$\begin{array}{c|c} 1 & x\\ 2 & C(x,y)\\ 3,4,5,6 & y\\ \end{array}$$

Uno ve que:

  • $A(x,y)$ returns $x$ con una probabilidad de $\frac35$ y $y$ con una probabilidad de $\frac25$.
  • $B(x,y,z)$ returns $x$ con una probabilidad de $\frac15$, $y$ con una probabilidad de $\frac35$ y $z$ con una probabilidad de $\frac15$.
  • $C(x,y)$ returns $x$ con una probabilidad de $\frac15$ y $y$ con una probabilidad de $\frac45$.

En general, se produce el 10 $de$ los resultados de cada una de ellas con $\frac1{10}$ de probabilidad.

Los procedimientos de $A$ y $C$ se espera que los requieren $\frac65$ rollos. Procedimiento de $B$ es de esperar que requieren $\frac23 \cdot 1 + \frac13 (1 + E(C)) = \frac75$ rollos. Por lo que el procedimiento principal exigirá a $\frac23 (1 + E(a)) + \frac13(1 + E(B)) = \frac{34}{15} = 2.2\overline{6}$ rollos.

25voto

MJD Puntos 37705

Aquí es un método alternativo, bastante diferentes de los descritos anteriormente, y el único que se acerca a la eficiencia máxima teórica.

Deje que $a=0 $ y $b=10$. Vamos a imaginar que estas describir el conjunto de real números entre 0 y 10, incluyendo el 0, pero no incluyendo a 10, que escribimos como $[0,10)$. Cada tirada de dados se estrecha el conjunto, y cuando el conjunto es bastante estrecha, tenemos nuestra respuesta.

El procedimiento para reducir el intervalo es el siguiente:

  1. Se lanza un dado, produciendo un entero $d$ entre 1 y 6.
  2. Cortar el intervalo $[a, b)$ en seis partes iguales y elegir los $d$th parte, tirar el resto:
    1. $\ell \leftarrow \frac16(b-a)\quad$ (el intervalo había longitud $b-$ antes; $\ell$ es una sexta parte de este tamaño)
    2. $a \leftarrow a + (d-1)\ell$
    3. $b\leftarrow un+\ell\quad$ (el intervalo de nuevo ahora tiene la longitud $\ell$)
  3. Si en este momento las partes enteras de $a$ y $b$ son los mismos, entonces el resultado es que la parte entera; detener. Si no, vuelva al paso 1. (Escribimos la parte entera de $x$ $\lfloor x \rfloor$.)

Por ejemplo, vamos a ver qué pasa cuando tenemos que tirar de 3, luego 5.

$$\def\db#1{\color{darkblue}{#1}}\begin{array}{ccc|cccc|c} [a, b) & \db\ell & \text{roll} & \text{nuevo } & \text{nuevo } b & \lfloor un\rfloor & \lfloor b \rfloor & \lfloor un\rfloor = \lfloor b \rfloor \\\hline [0,10)&\db{\frac{10}6} & 3 & 0 + 2\cdot\db\ell = \frac{20}{6} & \frac{20}{6} + \db{\frac{10}6} = \frac{30}6 & 3 & 5 & \texto{no} \\ \left[\frac{20}{6},\frac{30}6\right) & \db{\frac{10}{36}}& 5 & \frac{20}6 + 4\cdot\db\ell = \frac{160}{36}& \frac{160}{36} + \db{\frac{10}{36}} = \frac{170}{36} & 4 & 4 & \texto{sí} \end{array} $$

Las partes enteras al final son 4, por lo que el resultado es 4. Esta vez el resultado tomó sólo 2 tiros, pero puede tomar más:

$$\begin{array}{ccc|cccc|c} [a, b) & \db\ell & \text{roll} & \text{nuevo } & \text{nuevo } b & \lfloor un\rfloor & \lfloor b \rfloor & \lfloor un\rfloor = \lfloor b \rfloor\\\hline [0,10)&\db{\frac{10}6} & 5 & 0 + 4\cdot\db\ell = \frac{40}{6} & \frac{40}6 + \db{\frac{10}6} = \frac{50}6 & 6 & 8 & \texto{no} \\ \left[\frac{40}6,\frac{50}6\right)&\db{\frac{10}{36}} & 2 & \frac{40}6 + 1\cdot\db\ell = \frac{250}{36} & \frac{250}{36} + \db{\frac{10}{36}} = \frac{260}{36} & 6 & 7 & \texto{no} \\ \left[\frac{250}{36},\frac{260}{36}\right)&\db{\frac{10}{216}} & 2 & \frac{250}{36} + 1\cdot\db\ell = \frac{1510}{216} & \frac{1510}{216} + \db{\frac{10}{216}} = \frac{1520}{216} & 6 & 7 & \texto{no} \\ \left[\frac{1510}{216},\frac{1520}{2166}\right)&\db{\frac{10}{1296}} & 6 & \frac{1510}{216} + 5\cdot\db\ell = \frac{9110}{1216} & \frac{9110}{1296} + \db{\frac{10}{1296}} = \frac{9120}{1296} & 7 & 7 & \texto{sí} \\ \end{array} $$

Había llegamos otra 2 al final en vez de un 6, tendríamos todavía tenía $\lfloor un\rfloor = 6$ y $\lfloor b\rfloor = 7$ y nos han tenido para continuar. Cualquier otro rollo, tales como el 6 de hecho, llegamos, podría detener el proceso.

Lo que está sucediendo aquí es que imaginemos que estamos eligiendo un verdadero cantidad de $[0,10)$, y vamos, a continuación, tirar la parte de la fracción de este número real. Cada tirada de dados determina una base de 6 dígitos de $\{0,1,2,3,4,5\}$. La secuencia de dígitos laminados pueden ser concatenados con una fracción de punto para producir la base 6 de la versión de una fracción decimal entre 0 y 1. Si convertimos esta fracción a la base 10, para luego tomar su décimas lugar dígitos, vamos a tener el distribuidos de manera uniforme resultado que queremos.

Los cálculos con los $[a,b)$ está guardando la pista de nuestra incertidumbre en el número real se genera a partir de morir rollos. Para generar todo número real, tendríamos que tirar el dado para siempre, Pero no necesitamos que todo número real. Rodar un dado se reduce el intervalo de incertidumbre por un factor de 6, el intervalo se convierte en $\frac 16$ como de ancho. (Esto es lo que $\ell$ es de seguimiento.) Cuando el intervalo se ha reducido lo suficiente, es probable que se sitúan en su totalidad dentro de un intervalo $[0.p000\ldots, 0.p999\ldots)$ y en ese momento sabemos que el décimas lugar dígito, que es todo lo que necesitamos.

No podemos garantizar que se ataba el número de morir rollos de antemano (no hay ningún método puede, como se explica en los comentarios), pero para la producción de grandes números de dígitos, este método produce resultados con la teoría óptima promedio del número de rodillos, que es $$\frac{\log 10}{\log 6} \approx 1.2851,$$ mucho mejor que cualquiera de los métodos descritos en este hilo. Para la generación de un único dígito decimal, todavía necesitamos al menos dos rollos. Pero supongamos que queremos generar 10 dígitos decimales. En ese caso, en lugar de detenerse cuando $a $ y $b$ de acuerdo en su primer decimal, nos detenemos cuando están de acuerdo con 10 decimales. Esto lleva, en promedio, un poco más de $10\frac{\log 10}{\log 6} $ rollos, digamos alrededor de 13 o 14. Por ejemplo, supongamos que rollo $1,5,3,5,4,2,2,6,6,2,4,5,3,1$. Esto puede resumirse en $[a,b)$ $$\left[\frac{9707055060}{78364164096}, \frac{9707055070}{78364164096}\right) \approx \left[.1238710981, .1238710982\right)$$ para el de 14 rollos de tener en este caso generado 8 dígitos decimales $1\,2\,3\,8\,7\,1\,0\,9\,8$ (y casi una novena, que es 1 o 2), con una eficiencia de más de $\frac{14}8=1.75$ rollos por dígito.

24voto

wah Puntos 21

Puramente FTR. Creo que (en una, digamos, marketing sentido),

la forma más sencilla, comprensible método es este:

Rollo de una vez: impar significa que es un número de 1 a 5, incluso significa que es un número de 6 a 10.

Rollo de nuevo: muy simple, si usted obtiene un seis ignorar eso y sigan hasta llegar a un no-seis.

Usted tiene su respuesta.

Tenga en cuenta que en cualquier, dicen, casino o lugar similar, aunque sólo fuera un juego de mesa con los niños -

este es el único enfoque que es tan comprensible (a los no-matemáticos) que es el camino a seguir.

Vale la pena recordar que sólo una persona en un tropecientos entiende distribuciones: apuesto a que de cada 1000 adultos, sólo tal vez 1 (si), entendería que lanzar dos dados ¿ no dará "un 'aleatorio' número entre 1 y 12!" {Sí, me refería al tipo 1, no 2 :-) }

Por CIERTO, un número de otras personas han mencionado que este enfoque en los comentarios o respuestas. Aquí se señalan específicamente la real razón de ser (porque es comprensible para el profano.)

Graves para los matemáticos aquí, es un punto interesante para poner esto en su pensamiento de la mezcla: si, como lo fueron, trabajando para Hasbro, un casino, o tal vez hacer que la "aplicación" de los juegos, de cualquier complejo de ideas, sería dejada de lado. Así que es un poco como encontrar una prueba de que no sólo es fuerte .. pero elegante.

El desafío interesante aquí es encontrar el más "comprensible" la manera de hacerlo.

{Solo FTR un detalle, en el paso "1" elijo par/impar en lugar de 123-456, porque creo que es más "pegadizo" y, realmente, más fácil de entender.}

Un nombre pegadizo para todo este procedimiento, probablemente sería:

"agregar cinco" ..

es decir, en el paso dos "agregar cinco" si la primera clave rollo era aún. agregar cinco!

"¿Cómo diablos podemos hacer rodar un número diez con este los dados? Hey hombre, ¿ el "agregar cinco" cosa!"

Nadie se baraja barajar si no tiene un nombre pegadizo :)


Nota a pie de página. Estaba pensando en esto. Con respecto a este "agregar cinco" método. En realidad, puede ser preferible para la mayoría de los seres humanos, si se hizo al revés - entonces, ¿el 1-5 rollo de primera.

Para esta imagen, a continuación, se dicen a sus hijos: "ok, vamos a hacer un 'agregar a cinco niños, ya que tenemos un número de hasta diez!" "Oh, Mamá!". Primero sacas de 1 a 5. (Por desgracia, con la molestia de descartando cualquier 6s.) Luego de declarar - "Wow, un 2! ¿Qué significa esto a los niños?!" "¡Está bien! Es 2 o 7, derecho a la Mamá?!" "A la derecha! Y ahora cómo hacemos ....... "(que todos los comentarios) "HACEMOS RODAR UN par O IMPAR!"

La emoción ya es palpable.

Que rollo para el par/impar, y los distintos grupos de edad scream (más pequeño chico:) "Wow, una de dos . que incluso la derecha Stevie?!" (en la próxima niño:) "Incluso, yo lo sabía!" (Big sister:) "Que significa ocho!"

Me refiero a que esta es mejor que coger a todos a paseo de Piratas del Caribe cuando se corre hacia atrás.

Tenga en cuenta que contiene absolutamente elementos críticos de menores/suave pedagogía (podría ser la primera vez que el niño aprende acerca de la paridad, dicen) y es un excelente ejemplo de la regla-y-el siguiente paso (de hecho, los dos dispositivos pedagógicos son, tal vez, toda la razón de ser de jeux d''societe, tarjeta y juegos de mesa.)

Así que de todos modos (a) tomaría algunos de los consumidores de prueba, pero creo que añade un cierto escalofrío hacer el 1-5 rollo de primera. y (b) la verdad que me gustaría pensar en un sistema MÁS elegante .. en particular estoy preocupado por el "descarte seises" paso. Quién sabe, tal vez alguien va a pensar de una forma de evitar eso.

11voto

peterh Puntos 1095
  1. Rollo de un d6.
  2. El rodillo otra vez un d6. Si el resultado es impar, añadir 6 al resultado anterior.
  3. Ahora tienes un número aleatorio entre 1 y 12, en la distribución de nivel.
  4. Si el resultado es 11 o 12, reinicie desde 1.

P.d.: Sí, es una distribución de nivel. Vea los comentarios abajo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X