Generalmente per generare numeri "casuali" nell'hardware (per scopi di divertimento), puoi fare qualcosa come prendere un meccanismo che è in qualche modo imprevedibile e combinarlo con un meccanismo prevedibile, ma non ovvio.
Ad esempio, se si dispone di un contatore in esecuzione rapidamente e campionare l'output ogni volta che l'utente preme un pulsante (ad esempio durante la riproduzione della sequenza precedente) che sarà in qualche modo casuale, poiché potrebbero richiedere tempi variabili. Ma qualcuno che gioca al sistema premendo i pulsanti molto rapidamente potrebbe tendere a ottenere gli stessi pochi valori più e più volte (anche se se l'orologio si trova nella gamma MHz che potrebbe non essere una preoccupazione realistica).
Al contrario, è possibile utilizzare un registro a scorrimento lineare (Wikipedia) che alimenta una funzione combinatoria dello stato corrente un registro a scorrimento nel suo input, per generare una sequenza che non è immediatamente ovvia per gli umani, anche se il suo output per gli stessi input sarà in realtà del tutto prevedibile. Utilizzato da solo, questa non sarebbe una buona idea in quanto darebbe le stesse sequenze ad ogni gioco e sarebbe così rapidamente memorizzata da un utente ripetuto.
Ma se si combinano due metodi, come usare il timer per ottenere un valore iniziale imprevedibile, e quindi usare il registro a scorrimento del feedback lineare per mescolarlo (o forse lasciare che l'LFSR funzioni liberamente contro un orologio veloce e campionarlo in base a interazione con l'utente) dovresti riuscire a ottenere qualcosa di abbastanza casuale per un gioco di divertimento.
Un'altra fonte che potresti provare sarebbero i bit di ordine basso di un convertitore analogico-digitale.
Qualunque cosa tu faccia, probabilmente vorrai simularlo (e anche la tua progettazione generale del sistema) prima di costruire il circuito. Il progetto è abbastanza complesso che vale la pena usare un piccolo FPGA o un CPLD più grande.
E infine tieni presente che storicamente, il gioco originale Simon apparentemente utilizzava un microprocessore, il TMS1000. In questo modo, operazioni sequenziali generalmente complesse possono essere implementate in modo più efficiente in questo modo, con macchine a stati scelte solo per problemi semplici, che devono funzionare in modo estremamente rapido o che stanno imparando sostituti per eventuali lavori su tali problemi.
Modificare:
http://www.waitingforfriday.com/index.php/Reverse_engineering_an_MB_Electronic_Simon_game
Contiene alcune osservazioni interessanti, tra cui un'eventuale modifica dal TMS1000 a quella che potrebbe essere una versione con etichetta personalizzata. Più pertinente alla tua domanda, suggerisce che l'originale ha generato i suoi numeri casuali campionando un contatore a corsa libera quando l'utente ha premuto un pulsante ;-)