zsh: Gerando uma sequência de números pseudo-aleatórios sem repetição
Publicado por Sandro Marcell 24/02/2009
[ Hits: 10.670 ]
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
Configurando clientes NIS em distros baseadas no Red Hat
Configuração Teclado ABNT2 (Gnome3)
Configução básica de uma rede local, roteando e habilitando o firewall
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Meu notebook não reconhece monitor secundário (5)
Instalação da Imagem ISO do Tails (7)
erro nos dos pacotes de driver da placa de video nvidia por remoção (d... (18)