Página 1 de 1
Gerar números aleatórios

Enviado:
10 Ago 2007 21:19
por casebsantos
Prezados,
Estou precisando de uma rotina em assembly que possa gerar aleatoriamente números de 1 a 6.
Já tentei de tudo que é jeito mas não consegui fazer esta rotina.
Estou utilizando o pic 16f84.
Alguém poderia me ajudar.
Desde já agradeço.
Re: Gerar números aleatórios

Enviado:
11 Ago 2007 01:29
por Renie
Olá Case,
Pronto eu não tenho, serve idéias? Proponho 2 simples, em ambas,você
ativa um timer e deixa ele rolar livre (sem ativar interrupt é claro!).
Parece que vc quer simular um dado eletrônico.
1 - Quando precisar do nr, leia o valor do timer e faça um AND com 7
(para ter todos os bits úteis), se o valor for zero ou 7 volte a ler o timer
até obter o valor no range desejado.
2 - Quando precisar do nr, leia o valor do timer e faça comparações
sucessivas (aproximadamente com valores variando de 43 em 43), ou
seja, se o valor for menor que 44 o resultado é 1, senão, se menor que 87
o resultado é 2, e assim em diante.

Enviado:
11 Ago 2007 09:18
por Peters
Só lembrar que neste caso as solicitações do Nro aleatório não pode ser periódica, senão ela pode ser previsível, e deixa de ser pseudo-aleatório.
Re: Gerar números aleatórios

Enviado:
11 Ago 2007 22:25
por casebsantos
Amigo, na verdade não estou querendo simular um dado eletrônico é para outra aplicação.
A sua idéia me parece muito interessante o que não tinha pensado antes. Irei fazer isso então postarei o resultado.
Valeu
Renie escreveu:Olá Case,
Pronto eu não tenho, serve idéias? Proponho 2 simples, em ambas,você
ativa um timer e deixa ele rolar livre (sem ativar interrupt é claro!).
Parece que vc quer simular um dado eletrônico.
1 - Quando precisar do nr, leia o valor do timer e faça um AND com 7
(para ter todos os bits úteis), se o valor for zero ou 7 volte a ler o timer
até obter o valor no range desejado.
2 - Quando precisar do nr, leia o valor do timer e faça comparações
sucessivas (aproximadamente com valores variando de 43 em 43), ou
seja, se o valor for menor que 44 o resultado é 1, senão, se menor que 87
o resultado é 2, e assim em diante.

Enviado:
12 Ago 2007 00:22
por gibim
Olhe algumas informações neste link sobre números aleatórios.
http://asm51.eng.br/phpBB/viewtopic.php ... light=sha1

Enviado:
13 Ago 2007 07:28
por andre_luis
Quando o uC faz leitura de grandezas analógicas, isso pode facilitar um pouco.
Numa placa que eu lia o valor da rede eletrica de 60Hz constantemente, eu o usava também como semente para o gerador da a funçao rand(), da biblioteca do C.
Nesse caso acredito que o resultado fosse realmente aleatório, uma vez que a leitura era assíncrona à frequencia da rede eletrica.
+++