use List::Util "shuffle"; sub shuffleArray{ shuffle(@_); } #### sub shuffleArray{ my @p = @_; my $k; $k = $_ + int(rand(@p - $_)), @p[$_, $k] = @p[$k, $_] for 0 .. @p - 1; @p; } #### sub shuffleArray{ my @p = @_; map { splice @p, $_ + rand(@p - $_), 1, $p[$_] } 0 .. @p - 1; } #### sub shuffleArray{ my @p = @_; my $t; map { $t = splice @p, rand(@p), 1, $p[0]; shift @p; $t } 0 .. @p - 1; } #### sub shuffleArray{ my @w = map { rand } @_; @_[sort { $w[$a] <=> $w[$b] } 0 .. @_ - 1]; } #### sub shuffleArray{ map { $$_[1] } sort { $$a[0] <=> $$b[0] } map { [rand, $_] } @_; } #### sub shuffleArray{ map { $$_[0] } sort { ref $a <=> ref $b } map { bless [$_], rand } @_; }