Muitos grupos estão fazendo projetos que necessitam a geração interna de números aleatórios. Por exemplo, no Tetris o jogo deve escolher qual será a nova peça a entrar. No Genius, o jogo deve escolher qual a nova cor na sequencia.
Há algumas maneiras de fazer isso
- Geração de números REALMENTE aleatórios. Como o circuito é determinístico, é necessário usar inputs dos jogadores/usuários para gerar os números. Deixem um contador rodando em alta frequência e usem o input do usuário como sinal de amostragem do valor da contagem. Por exemplo, se for necessário escolher dentre 5 formas no Tetris, faça um contador mod5 de alta frequencia e use os inputs do jogador para sortear a próxima peça
- Geração de números pseudo-aleatórios. Há circuitos, como os LFSR (Linear Feedback Shift Register), que funcionam como um contador cuja sequência de contagem tem várias características de sequências aleatórias
-
Gravar sequências geradas de antemão. Por exemplo, no Genius, gravar uma longa sequência de cores mais ou menos aleatórias (por exemplo em anel) e acessá-la de forma sucessiva, aparentando aleatoriedade.
- Basear-se em eventos externos como por exemplo a hora local. Essa é uma das únicas formas de gerar números aleatórios quando não há interferência do usuário.
Nos nossos projetos, eu prefiro a alternativa 1. Se alguém ainda tiver dúvida, nos procure.
--
Mario Côrtes