Pular para o conteúdo

zsh: Gerando uma sequência de números pseudo-aleatórios sem repetição

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.
Sandro Marcell SMarcell
Hits: 11.053 Categoria: Shell Script Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download rand_wr.sh Enviar nova versão

Esconder código-fonte

#!/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

Gere Números Randomicos

Fedora 16: Passos essenciais

Gerando cadeias aleatórias

Script que insere cor nos seus comandos :)

Obter lista de cidades do IBGE

#2 Comentário enviado por elgio em 28/02/2009 - 23:09h
Pra que tudo isto?

Quer 100 números randômicos?

for i in `seq 1 100`; do echo $RANDOM;done

O linux já tem uma variável de ambiente com um número randômico. Ela é gerada a partir de /dev/random o gerador de número randômicos do kernel.
#3 Comentário enviado por SMarcell em 01/03/2009 - 02:10h
"Quer 100 números randômicos?"

Sim! Mas sem que haja repetição de valores nesse intervalo.

Por isso:

Script que através do uso de vetores, gera a partir de um range uma sequência de números pseudo-aleatórios sem repetição de valores.

Entendeu?

Flw!!!

Contribuir com comentário

Entre na sua conta para comentar.