Opa.. não é por nada não, mas a complexidade (O(n)) disto poderia ser
menor, heim? Quando já tiver 990 numeros, o numero randomico gerado terá
somente 1% de chance de ser aceito... fora se não sobrarem no final dois
numeros próximos (digamos 5 e 9) de forma que um deles entre como o 998o.
número e o último nunca seja aceito.
Acho que uma sugestão de melhora seria fazer duas listas, a de saída e a de
números que ainda estão "dentro da urna", verificando também o caso onde o
último número (ou os ultimos, o que também podem ser) nunca serão aceitos.
Abraços algorítmicos,
--
0010111100101010010100110100100101000111
Fernando LEMES da Silva
www.koho.com.br (0x43fca35b)
0101001101001001010001110010101000101111
On Thursday 14 February 2008 9:14:10 pm Fabiano Caixeta Duarte wrote:
> Aceito sugestões de melhoria... vivendo e aprendendo :)
>
> #!/bin/bash
> count=0
> anterior=$((RANDOM%999+1))
> arr=()
> while [ $count -lt 999 ]; do
> atual=$((RANDOM%999+1))
> diferenca=$((anterior - atual))
> if [ $diferenca -gt 7 -o $diferenca -lt -7 ]; then
> if ! echo [EMAIL PROTECTED] | grep -w $atual > /dev/null;
> then
> arr[$count]=$atual
> anterior=$atual
> ((count++))
> echo $atual
> fi
> fi
> done