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.561 ]
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 PARA AUTOMAÇÃO NA CRIAÇÃO DE USUÁRIOS NO AMBIENTE LINUX.
Conversor de Celsius para Farenheit e vice-versa...
Mostrando um exemplo de redirecinamento
Como gerar um podcast a partir de um livro em PDF
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Como Instalar o Microsoft Teams no Linux Ubuntu
Músicas de Andrew Hulshult no DOOM (WAD)
Instalar o Apache, MySQL e PHP no Oracle Linux 8
Bloqueando telemetria no Deepin 23.1
Como converter imagens PNG/JPEG para SVG em linha de comando
Qual é o verdadeiro diferencial de um profissional especialista em Lin... (0)
Java é uma linguagem de brinquedo? (10)