Im Allgemeinen können Sie zum Generieren von "zufälligen" Zahlen in der Hardware (für Unterhaltungszwecke) beispielsweise einen Mechanismus verwenden, der etwas unvorhersehbar ist, und ihn mit einem Mechanismus kombinieren, der vorhersehbar, aber nicht offensichtlich ist.
Wenn beispielsweise ein Zähler schnell läuft und Sie die Ausgabe abtasten, wenn der Benutzer eine Taste drückt (z. B. während der Wiedergabe der vorherigen Sequenz), ist dies etwas zufällig, da dies unterschiedlich lange dauern kann. Aber jemand, der das System durch sehr schnelles Drücken von Tasten spielt, kann dazu neigen, immer wieder dieselben wenigen Werte zu erhalten (wenn der Takt jedoch im MHz-Bereich liegt, ist dies möglicherweise kein realistisches Problem).
Umgekehrt können Sie ein lineares Rückkopplungsschieberegister (Wikipedia) verwenden, das eine kombinatorische Funktion des aktuellen Zustands eines Schieberegisters in seine Eingabe zurückspeist, um eine Sequenz zu erzeugen, die für Menschen nicht ohne weiteres offensichtlich ist, obwohl ihre Ausgabe für dieselben Eingaben erfolgt wird tatsächlich völlig vorhersehbar sein. Für sich genommen wäre dies auch keine gute Idee, da es bei jedem Spiel die gleichen Sequenzen geben und so schnell von einem wiederkehrenden Benutzer gespeichert werden würde.
Wenn Sie jedoch zwei Methoden kombinieren, z. B. den Timer verwenden, um einen unvorhersehbaren Startwert zu erhalten, und dann das lineare Rückkopplungsschieberegister verwenden, um ihn zu verwechseln (oder den LFSR möglicherweise gegen einen schnellen Takt frei laufen zu lassen und ihn basierend darauf abzutasten Benutzerinteraktion) Sie sollten in der Lage sein, etwas Zufälliges für ein Unterhaltungsspiel zu bekommen.
Eine andere Quelle, die Sie ausprobieren könnten, wären die niederwertigen Bits eines Analog-Digital-Wandlers.
Was auch immer Sie tun, Sie möchten es wahrscheinlich simulieren (und auch Ihr Gesamtsystemdesign), bevor Sie die Schaltung erstellen. Das Projekt ist so komplex, dass sich die Verwendung eines kleinen FPGA oder einer größeren CPLD lohnen kann.
Und denken Sie schließlich daran, dass das ursprüngliche Simon-Spiel in der Vergangenheit offenbar einen frühen Mikroprozessor verwendet hat, den TMS1000. Im Allgemeinen können komplexe sequentielle Operationen auf diese Weise effizienter implementiert werden, wobei Zustandsmaschinen nur für Probleme ausgewählt werden, die einfach sind, extrem schnell ausgeführt werden müssen oder Ersatz für eventuelle Arbeiten an solchen Problemen sind.
Bearbeiten:
http://www.waitingforfriday.com/index.php/Reverse_engineering_an_MB_Electronic_Simon_game
Enthält einige interessante Beobachtungen, einschließlich einer eventuellen Änderung des TMS1000 zu einer möglicherweise benutzerdefinierten Version davon. Für Ihre Frage relevanter ist, dass das Original seine Zufallszahlen durch Abtasten eines frei laufenden Zählers generiert hat, als der Benutzer einen Knopf drückte ;-)