Geralmente para gerar números "aleatórios" no hardware (para fins de diversão), você pode fazer algo como pegar um mecanismo que é um tanto imprevisível e combiná-lo com um mecanismo que é previsível, mas não óbvio.
Por exemplo, se você tiver um contador executando rapidamente e faça uma amostra da saída sempre que o usuário pressionar um botão (como durante a reprodução da sequência anterior) que será um tanto aleatória, pois eles podem levar períodos variáveis. Mas alguém que joga no sistema pressionando botões muito rapidamente pode ter os mesmos valores repetidamente (embora o relógio esteja na faixa de MHz, isso pode não ser uma preocupação realista).
Por outro lado, você pode usar um Linear Feedback Shift Register (Wikipedia) que alimenta uma função combinatória do estado atual e um shift shift de volta à sua entrada, para gerar uma sequência que não é prontamente óbvia para os seres humanos, mesmo que sua saída para as mesmas entradas será realmente totalmente previsível. Usado por si só, isso também não seria uma boa idéia, pois daria as mesmas seqüências a cada jogo do jogo e seria rapidamente memorizado por um usuário repetido.
Mas, se você combinar dois métodos, como usar o timer para obter um valor inicial imprevisível e usar o registro de troca de feedback linear para misturá-lo (ou talvez deixar o LFSR correr livremente contra um relógio rápido e fazer a amostragem com base em interação do usuário), você deve conseguir algo aleatório o suficiente para um jogo de diversão.
Outra fonte que você poderia tentar seria os bits de baixa ordem de um conversor de analógico para digital.
O que quer que você faça, provavelmente desejará simulá-lo (e também o design geral do sistema) antes de construir o circuito. O projeto é suficientemente complexo para que valha a pena usar um FPGA pequeno ou um CPLD maior.
E, finalmente, lembre-se de que, historicamente, o jogo original de Simon aparentemente usava um microprocessador antigo, o TMS1000. Operações seqüenciais geralmente complexas podem ser implementadas de maneira mais eficiente dessa maneira, com máquinas de estado escolhidas apenas para problemas simples, que devem ser executados com extrema rapidez ou estão aprendendo substitutos para eventuais trabalhos sobre esses problemas.
Editar:
http://www.waitingforfriday.com/index.php/Reverse_engineering_an_MB_Electronic_Simon_game
Contém algumas observações interessantes, incluindo uma eventual alteração do TMS1000 para o que pode ser uma versão com rótulo personalizado. Mais relevante para sua pergunta, ele sugere que o original gerou seus números aleatórios amostrando um contador de corrida livre quando o usuário pressionou um botão ;-)