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.871 ]
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";
Lendo o conteúdo de uma página da Internet
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Instalar Dual Boot, Linux+Windows. (8)
Eaí? Já programou no windows? (2)
Erro ao enviar arquivos para o Storage Synology NAS (0)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









