Me gustaría implementar un circuito completamente digital que pueda generar una variable aleatoria X con P (1) = p, P (0) = 1-p (donde, idealmente, la probabilidad p sería configurable con un parámetro programable).
Un LFSR es útil para la generación de números pseudoaleatorios y para obtener una variable aleatoria en la que las probabilidades de estar en 0 o 1 son (casi) iguales: esto no es lo que estoy buscando.
Las ideas en las que estaba pensando:
- Podría 'Y' los resultados de varios LFSR, pero dado que en mi aplicación p a menudo será de < 0.1, el número de LFSR necesarios no será práctico.
- También podría intentar agregar un comparador y comparar el contenido del LFSR con un umbral configurable para obtener la probabilidad p. Pero dado que un LFSR "cambia" su contenido, ¿no serían los resultados sucesivos del comparador demasiado similares o predecibles? No estoy familiarizado con estos conceptos, por lo que no estoy seguro.
Necesito que los valores sucesivos de la variable aleatoria generada sean lo más independientes posible, pero no es un problema si el patrón de valores sucesivos es cíclico a muy largo plazo (como para cualquier salida de LFSR). Gracias de antemano por cualquier mejora de las ideas anteriores o cualquier idea totalmente diferente que pueda resolver mi problema.
EDITAR - Un microcontrolador está fuera del alcance de esta pregunta por dos razones:
- Esta implementación apunta a un ASIC
- Tengo recursos limitados y es posible que tenga que crear una instancia de este circuito un par de veces, un µC es simplemente un exceso de ingresos
- esto tiene que ser una generación de números aleatorios de alta velocidad (un µC requeriría varios ciclos de reloj)