[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] número randomico sem repetição
From: |
Fernando Lemes da Silva |
Subject: |
Re: [shell-script] número randomico sem repetição |
Date: |
Wed, 7 Jun 2006 19:33:45 -0300 |
User-agent: |
KMail/1.9.1 |
Certa vez vi algo desse tipo aqui na lista e achei muito bonito.. e
aproveitei para postar uma solução mais economica. (Se não me engano o que eu
tinha visto era mais bonito ainda)
seq 1 100 | while read N; do echo "${RANDOM} $N"; done | sort | head -n 30
| cut -d' ' -f 2
Isto irá gerar a sequencia de 1 a 100 e irá adicionar um numero aleatório
na frente. Na sequencia ele ordena pelo numero aleatório, deixando a
sequencia de 1 a 100 aleatória. Depois basta pegar os 30 primeiros e tirar o
número aleatório.
A propósito.. pegar os dois primeiros digitos do $RANDOM não é uma boa
ideia pois isto estaria viciando a randomicidade.
[]'s
--
/**********************************************
_
°v° Fernando Lemes da Silva
/(¡)\ www.koho.com.br
^ ^ Linux user #address@hidden
**********************************************/
Em Quarta 07 Junho 2006 15:29, Tiago Barcellos Peczenyj escreveu:
> 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