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.612 ]
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;
Converter rmvb em mpeg com Shell + Yad
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves
Salvar estado da VM no virt-manager [RESOLVIDO] (5)
Primeiras impressões do Debian 13 (11)