Généralement, pour générer des nombres "aléatoires" dans le matériel (à des fins de divertissement), vous pouvez faire quelque chose comme prendre un mécanisme qui est quelque peu imprévisible et le combiner avec un mécanisme qui est prévisible, mais pas évident.
Par exemple, si vous avez un compteur qui s'exécute rapidement et échantillonnez la sortie chaque fois que l'utilisateur appuie sur un bouton (comme lors de la lecture de la séquence précédente) qui sera quelque peu aléatoire, car cela peut prendre plus ou moins de temps. Mais quelqu'un jouant au système en appuyant très rapidement sur les boutons pourrait avoir tendance à obtenir les mêmes valeurs encore et encore (bien que si l'horloge est dans la plage des MHz, cela ne peut pas être un problème réaliste).
Inversement, vous pouvez utiliser un registre à décalage à rétroaction linéaire (Wikipedia) qui alimente une fonction combinatoire de l'état actuel d'un registre à décalage dans son entrée, pour générer une séquence qui n'est pas facilement évidente pour les humains, même si sa sortie pour les mêmes entrées sera en fait entièrement prévisible. Utilisé seul, ce ne serait pas non plus une bonne idée car il donnerait les mêmes séquences à chaque jeu du jeu et serait donc rapidement mémorisé par un utilisateur répétitif.
Mais, si vous combinez deux méthodes, telles que l'utilisation de la minuterie pour obtenir une valeur de départ imprévisible, puis l'utilisation du registre à décalage à rétroaction linéaire pour la mélanger (ou peut-être laisser le LFSR fonctionner librement contre une horloge rapide et l'échantillonner en fonction de interaction avec l'utilisateur), vous devriez pouvoir obtenir quelque chose d'assez aléatoire pour un jeu d'amusement.
Une autre source que vous pourriez essayer serait les bits de poids faible d'un convertisseur analogique-numérique.
Quoi que vous fassiez, vous voudrez probablement le simuler (ainsi que la conception globale de votre système) avant de construire le circuit. Le projet est suffisamment complexe pour que l'utilisation d'un petit FPGA ou d'un plus grand CPLD puisse être utile.
Et enfin, gardez à l'esprit que, historiquement, le jeu Simon d'origine utilisait apparemment un premier microprocesseur, le TMS1000. De manière générale, des opérations séquentielles complexes peuvent être mises en œuvre plus efficacement de cette façon, avec des machines à états choisies uniquement pour des problèmes qui sont simples, doivent fonctionner extrêmement rapidement ou sont des substituts d'apprentissage pour un travail éventuel sur de tels problèmes.
Éditer:
http://www.waitingforfriday.com/index.php/Reverse_engineering_an_MB_Electronic_Simon_game
Contient quelques observations intéressantes, y compris un éventuel changement du TMS1000 à ce qui pourrait être une version personnalisée de celui-ci. Plus pertinent pour votre question, cela suggère que l'original a généré ses nombres aléatoires en échantillonnant un compteur libre lorsque l'utilisateur a appuyé sur un bouton ;-)