http://www.perlmonks.org?node_id=868629


in reply to getting random number 8 times never the same

This is the standard "pack of cards" algorithm that I mentioned in Re: Random data generation., misunderstanding BrowserUk's question. Changing the code for your case would give:
use strict; use warnings; my $nRepeats = 1; my @sSet = (4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); my $nLength = 8; my @sAll; for (1..$nRepeats) { push (@sAll, @sSet); } if ($nLength - 1 > $#sAll) {die "Don't be silly"} my $sString; for (1..$nLength) { my $i = int(rand(@sAll)); $sString .= $sAll[$i]; $sAll[$i] = $sAll[-1]; pop(@sAll); } print "$sString \n";
I haven't tested this variation, but I tested the original.

Regards,

John Davies