shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] número randomico sem repetição


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] número randomico sem repetição
Date: Wed, 7 Jun 2006 15:29:00 -0300

Desculpem pessoal

Verifiquei que simplesmente usei o arquivo lista apenas uma vez.

Ai vai corrigido (e mais sucinto)

seq x y > lista.dat # cria uma lista de numeros entre x e y, opcional
# pode-se usar ${RANDOM:a:b} se forem os numeros entre 0 e 99

echo "" > rand.dat

until wc -l rand.dat | grep -q 30 ; do
        number=$(head -${RANDOM:0:2} lista.dat | tail -1) # esqueci... :/
        grep -q $number rand.dat || echo $number >> rand.dat
done

2006/6/7, Tiago Barcellos Peczenyj <address@hidden>:
Sim, vc vai gerando e guardado em um vetor, a cada vez que vc gerar um
vc compara com o vetor/vetor gerado, se não existe, vc joga nesse
vetor/arquivo.

seq 1 100 > lista # sua lista de 100 numeros, se quiser gere de outra forma...
#  o importante eh lista ter 1 numero por vez

i=1 # inicia o contador

head -${RANDOM:0:2} lista | tail -1 > rand # começa a lista de numeros rand

while [ $i -lt 30 ]; do # 30 pode ser um parametro externo tb...

        number=${RANDOM:0:2}
        # se o grep -q nao encontrar o numero no arquivo rand
        # o bloco seguinte eh executado
        grep -q $number rand || { let i++ ; echo $number >> rand ; }

done

$ wc -l rand # linhas geradas
30 rand

$ sort rand | uniq | wc -l # vamos ver se repetiu alguma
30

Bom proveito !

2006/6/7, Fabio <address@hidden>:
> desculpa.. acho que nao me expressei bem.. mas tipo assim...
> preciso pegar 30 numeros aleatorios de um total de 100 e que dentre os
> 30 nenhum  seja repetido hehehe tem como fazer isso?
>
> Valeus..

--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer



--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

[Prev in Thread] Current Thread [Next in Thread]