zsh: Gerando uma sequência de números pseudo-aleatórios sem repetição
Publicado por Sandro Marcell 24/02/2009
[ Hits: 10.921 ]
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
pwmanager - Gerenciador de senhas em shell script
Script para configurar a rede no linux...
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









