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.742 ]
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;
script para trabalhar com disquetes no linux
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Samba 4 AD-DC 2026: Como instalar e configurar um Active Directory (via APT-GET)
[Resolvido] Sumiço de redes e micro quedas no iwd/iwgtk (Realtek rtw88)
Como Configurar DNS Reverso (PTR) em Ambientes Linux e Microsoft
Preparando o Ambiente para Administrar o Samba 4 a partir do Windows com RSAT









