Implemente un programa o función que simule dados comunes para juegos de rol. Debe manejar al menos el d6 y d20, los dos dados más comunes.
Sin embargo, debería funcionar como los jugadores estereotipados esperan que funcionen, y no como un verdadero trabajo de dados.
Es una broma entre jugadores, que uno puede tener un dado especialmente afortunado para una tirada muy importante, lanzando previamente muchos dados, seleccionando los que resultaron en un "1", y luego lanzándolos nuevamente, hasta que obtenga unos pocos que arrojaron un "1" varias veces. Luego los conserva con cuidado, ya que sacaron un 1 varias veces en secuencia, por lo que la probabilidad de sacar un 1 la próxima vez debería ser extremadamente baja.
Por supuesto, no es así como funcionan los dados en la vida real , porque las tiradas son estadísticamente independientes.
Tus dados simulados tienen que tener en cuenta las tiradas anteriores y funcionar de manera similar a cómo el jugador en la falacia del jugador espera que funcione. Por ejemplo, si se obtuvieron muchos números bajos, la probabilidad de obtener un número mayor debería aumentarse.
Sin embargo, como esto es trampa, debes ocultarlo bien . Esto significa que una mirada casual al programa no debería revelar que hiciste trampa. Esto significa que guardar explícitamente los resultados anteriores y leerlos en cada lanzamiento sería demasiado sospechoso. Tienes que ocultar esta "propiedad" de tus dados y puntos de bonificación si lo haces plausible negable y lo disfrazas como un error honesto. (por ejemplo, crea su propio RNG con una falla "no intencional")
Votantes, tengan en cuenta cuán bien oculto está este "defecto".
Los programas deben ser claros y no ofuscados. Es demasiado fácil ocultar el código maligno en un programa ofuscado.
getRandomBetween(1,d)
me haría profundizar en él.Respuestas:
Java
Es tan simple que obviamente no oculta nada: pero
java.util.Random
es un generador lineal congruencial directo, y utiliza una técnica de descarte para garantizar la uniformidad, por lo que garantiza que en cualquier análisis del múltiplo más grandesize
de 2 ^ 48 muestras distribuirá el números de manera uniforme, satisfaciendo el requisito.fuente
java.util.Random
realiza tiene muy poco que ver con el comportamiento de esta respuesta. Realmente, en lo que se basa esta respuesta es en el hecho de que, como cualquier RNG,java.util.Random
tiene un período, y si genera una cantidad de números en el orden del período, sus propiedades estadísticas se descomponen. Eso no es muy interesante; Lo mismo sucedería incluso con un RNG criptográficamente seguro como Blum Blum Shub si lo ejecutara lo suficiente.Rubí
Actualmente solo admite d6, agregará soporte d20 más adelante ...
He aquí que esos dados son desagradables.
fuente
Haskell
Usa una cosa al azar para hacer otra cosa al azar: en este caso, baraja cartas para generar tiradas de dados.
Toma un argumento, el número de caras en el dado. La salida es así:
... y así sucesivamente para todas las tarjetas (los descartes no se imprimen). ¿Muy obvio?
fuente