La falacia del jugador es un sesgo cognitivo en el que erróneamente esperamos que las cosas que ocurrieron a menudo tengan menos probabilidades de ocurrir en el futuro y que las cosas que no ocurrieron en un tiempo tengan más probabilidades de suceder pronto. Su tarea es implementar una versión específica de esto.
Explicación del desafío
Escriba una función que devuelva un entero aleatorio entre 1 y 6, inclusive. El problema: la primera vez que se ejecuta la función, el resultado debe ser uniforme (dentro del 1%), sin embargo, cada llamada posterior se sesgará a favor de los valores que se han lanzado menos veces anteriormente. Los detalles específicos son los siguientes:
- El dado recuerda los recuentos de números generados hasta ahora.
- Cada resultado se pondera con la siguiente fórmula:
- Por ejemplo, si el rollo cuenta hasta ahora es , los pesos serán , es decir que usted será 4 veces más probabilidades de sacar un que un .
- Tenga en cuenta que la fórmula significa que un resultado de la tirada de se pondera igual que
Reglas y suposiciones
- Se aplican las reglas estándar de E / S y las lagunas prohibidas
- Los dados no deben ser deterministas. (es decir, use un PRNG sembrado de una fuente volátil, ya que normalmente está disponible como un generador incorporado).
- Su fuente aleatoria debe tener un período de al menos 65535 o ser verdadera aleatoriedad.
- Las distribuciones deben estar dentro del 1% para pesos de hasta 255
- Los RNG de 16 bits son lo suficientemente buenos como para cumplir con los requisitos anteriores. La mayoría de los RNG incorporados son suficientes.
- Puede pasar la distribución actual siempre que esa distribución esté mutada por la llamada o la distribución posterior al lanzamiento se devuelva junto con la tirada del dado. Actualizar la distribución / conteos es parte de este desafío .
- Puede usar pesas en lugar de conteos. Al hacerlo, cada vez que un peso cae a 0, todos los pesos deberían aumentar en 1 para lograr el mismo efecto que el conteo de almacenamiento.
- Puede usar estos pesos como repeticiones de elementos en una matriz.
Buena suerte. Que los bytes estén siempre a tu favor.