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.330 ]
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;
Atualização automática Debian / Ubuntu
Script simples de Backup para os diretórios listados abaixo do /
Comparando conteúdo de pastas...
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Instalando Google Chrome no Ubuntu 24.04 LTS
Quantidade de caracteres suportados na barra de endereços dos navegadores
Problema ao configurar Zabbix no ubuntu (8)
Iso win10 arm para galaxy book go NP34OXLA-K06BR (1)
Como faço pra um script ser executado apenas abrindo um terminal e dan... (3)