zsh: Gerando uma sequência de números pseudo-aleatórios sem repetição
Publicado por Sandro Marcell 24/02/2009
[ Hits: 10.948 ]
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
Instalação de programas no Ubuntu Linux
Script para desinstalar pacotes desnecessários no OpenSuse
Baixa e instala WinRAR no Linux
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
archlinux resolução abaixou após atualização (18)
Conky não mostra temperaturas da CPU no notebook (7)
Estou com um problema no meu desktop do ubuntu (2)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (0)









