Lista de números aleatórios não-repetidos de um intervalo em Perl
Publicado por Perfil removido (última atualização em 16/04/2012)
[ Hits: 5.807 ]
Este script gera uma lista unidimensional tamanho N, preenchendo esta completamente com números aleatórios no intervalo de 1 até N sem repetições.
Gera-se um número aleatório, este é verificado se foi inserido anteriormente. Se caso não, ele o insere e repete o procedimento, senão ele gera outro valor e procura novamente se repetiu. Até que a lista esteja por completo cheia com um valor de cada.
Repetições podem ser visualmente identificadas através de:
$ ./alea001,pl | sort -n --key=2
Escolheu-se o valor 52 para teste por ser este o número de cartas de um baralho-padrão.
A verificação de repetições tornar-se á exaustiva caso não seja automatizada.
Por enquanto não constam falhas, sendo que na versão em C já constei por algo. Logo podem haver.
#!/usr/bin/perl use strict; use warnings; # Para testar se não há números repetidos, usar por exemplo: # ./alea001.pl | sort -n --key=2 BEGIN { srand() if $] < 5.004 } my $VALOR = 52; my ($i, $j, $k); my @vec = (); my $n = $VALOR; $i = 0; while ($i<$n) { $vec[$i++] = -1; } ($i, $j) = (0, 0); while ($i<$n) { $j = 1 + int rand($n); $k = 0; while ($k<=$i && $vec[$k++]!=$j) {} $vec[$i++] = $j if ($k==$i+1); } $i = 0; while ($i<$n) { print "$i\t$vec[$i++]\n"; } #print "\n";
Escrevendo varias linhas em um arquivo qualquer
Lendo o conteúdo de uma página da Internet
Usando comandos shell com Perl
"Codificação" de texto em Perl
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (2)
converter algoritmo C++ em C? (0)
Falha com leitor de digitais no Ubuntu: sugestões? (0)