Array de números aleatórios não-repetidos de um intervalo em Shellscript (Bashscript)
Publicado por Perfil removido (última atualização em 16/04/2012)
[ Hits: 5.812 ]
Este script preenche um array de tamanho N com números aleatórios pertencentes ao intervalo de 1 a N.
Ele gera um número e verifica se já foi inserido. Se sim, ele insere, gera outro e repete-se de novo. Se não, ele gera outro número e volta ao teste até o preenchimento completo do array.
Dá prá saber se foi repetido algum número com o seguinte comando:
$ ./alea001.sh | sort -n --key=2
Que pode ser melhorado usando-se comandos de linha como uniq, que filtram texto por critério de repetição.
O teste foi feito usando-se o número 52 porque é o mesmo número de cartas do baralho comum.
Por enquanto está sem falhas.
#!/bin/bash
# Para testar se não há números repetidos, usar por exemplo:
# ./alea001.sh | sort -n --key=2
unset VALOR i j k n vec;
VALOR=52;
n=$VALOR;
i=0;
while [[ i -lt n ]]; do
vec[$i]=-1;
let i++;
done;
i=0; j=0;
while [[ i -lt n ]]; do
let j=($RANDOM*VALOR)/32767 j++ k=0;
while [[ k -le i && ${vec[$k]} -ne j ]]; do
let k++;
done;
[[ k -eq $((i+1)) ]] && vec[$i]=$j && let i++;
done;
i=0;
while [[ i -lt n ]]; do
echo -e "$i\t${vec[$i]}";
let i++;
done;
unset VALOR i j k n vec;
Verificando se uma placa de rede está presente
cieQemu - Interface para o qemu (Shell & Xdialog)
Rotina de Vacuum para banco de Dados Postgres
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Discos que não instalam o sistema por erro MBR/GPT no Linux
Hospedagem de Mangás com Kavita e Docker para Acesso Remoto via Tailscale
Aplicar tema e ícones do Ubuntu Cinnamon no Arch Linux sem AUR
Enquete: qual bloco de código C++ é mais legível? (3)
Instalação do driver Epson L3150 [RESOLVIDO] (5)









