[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] 1/2 OFF TOPIC Embaralhar sequência de números
From: |
Fernando Lemes da Silva |
Subject: |
Re: [shell-script] 1/2 OFF TOPIC Embaralhar sequência de números |
Date: |
Fri, 15 Feb 2008 11:17:26 -0200 |
User-agent: |
KMail/1.9.6 |
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 ${arr[@]} | grep -w $atual > /dev/null; then
> arr[$count]=$atual
> anterior=$atual
> ((count++))
> echo $atual
> fi
> fi
> done