sub naive (@) { for (reverse 1..$#_) { my $r=int rand($_+1); @_[$_,$r]=@_[$r,$_]; } } #### sub bzr (@) { my @a = 0..$#_; my $i = @_; my $n; map +($_[$a[$n=rand($i--)]], $a[$n]=$a[$i])[0], @_; } #### my $x = $l[$r]; $l[$r] = $l[$_]; $l[$_] = $x; #### sub naive2 (@) { my @l=@_; my @l2; for (reverse 0..$#l) { my $r=int rand($_+1); push @l2, $l[$r]; $l[$r] = $l[$_]; } @l2; }