Array de números aleatórios não-repetidos de um intervalo em Shellscript (Bashscript)
Publicado por Perfil removido (última atualização em 16/04/2012)
[ Hits: 5.427 ]
Este script preenche um array de tamanho N com números aleatórios pertencentes ao intervalo de 1 a N.
Ele gera um número e verifica se já foi inserido. Se sim, ele insere, gera outro e repete-se de novo. Se não, ele gera outro número e volta ao teste até o preenchimento completo do array.
Dá prá saber se foi repetido algum número com o seguinte comando:
$ ./alea001.sh | sort -n --key=2
Que pode ser melhorado usando-se comandos de linha como uniq, que filtram texto por critério de repetição.
O teste foi feito usando-se o número 52 porque é o mesmo número de cartas do baralho comum.
Por enquanto está sem falhas.
#!/bin/bash # Para testar se não há números repetidos, usar por exemplo: # ./alea001.sh | sort -n --key=2 unset VALOR i j k n vec; VALOR=52; n=$VALOR; i=0; while [[ i -lt n ]]; do vec[$i]=-1; let i++; done; i=0; j=0; while [[ i -lt n ]]; do let j=($RANDOM*VALOR)/32767 j++ k=0; while [[ k -le i && ${vec[$k]} -ne j ]]; do let k++; done; [[ k -eq $((i+1)) ]] && vec[$i]=$j && let i++; done; i=0; while [[ i -lt n ]]; do echo -e "$i\t${vec[$i]}"; let i++; done; unset VALOR i j k n vec;
Script Multifunção (Ubuntu e derivados)
Colorindo o Shell - Código Puro
Acesse seus host por vncviewer
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
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Dica sobre iptables ACCEPT e DROP (4)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (17)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta