zsh: Gerando uma sequência de números pseudo-aleatórios sem repetição
Publicado por Sandro Marcell 24/02/2009
[ Hits: 10.888 ]
Homepage: http://sanmarcell.wordpress.com
Simples Z shell script que atráves do uso de vetores, gera uma sequência de números pseudo-aleatórios sem repetição de valores.
#!/bin/zsh -f
#
# Simples (bem simples mesmo!) gerador de numeros pseudo-aleatorios
# sem repeticao de valores.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
# Boa Vista, Roraima - 17/02/2009
#
# Obs.:
# - O script gera valores na faixa de 1~VALOR_MAXIMO;
# - Com uma simples alteracao, e possivel fazer com que este script 
# embaralhe os elementos de um vetor ;)
# - O formatador de saida 'printf' esta operando com valores na casa
# das centenas (%-4s), para utiliza-lo na casa dos milhares,va 
# adicionando 1 ao valor de formatacao;
# - Script passivel de melhorias!
zmodload -i zsh/mathfunc
seed=$$
# Vetor contendo a faixa de valores utilizados para geracao da sequencia
typeset -a array
array=({1..100})
# Quantidade de interacoes a realizar:
loop=10
for ((i = 0 ; i < loop ; i++))
do
   # Gera-se um valor com base na quantidade de elementos do vetor.
   # Esse valor sera o indice a ser utilizado para referenciar
   # elementos no vetor:
   index=$((1 + int(${(w)#array} * rand48(seed))))
   
   # Com o valor em maos, basta utiliza-lo como indice para buscar
   # o elemento referenciado por ele no vetor e imprimir esse elemento
   # na tela:
   # print -n "$array[$index] "
   printf "%-4s" $array[$index]
   
   # E para evitar que o valor impresso seja reutilizado, basta
   # remove-lo do vetor!
   array[$index]=()
done
print ""
# Fim
Obter temperatura do Weather.com
Script para realizar atualização automática do flash player
Visualisando espaço em disco, data do sistema e usuarios conectados
System Software 2.1 - Instale e remova repositórios e programas de forma simples
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)
Instalação dualboot Windows 11 e Debian 13 (7)









