in reply to
Re: Randomize elements among several arrays, while maintaining original array sizes.
in thread Randomize elements among several arrays, while maintaining original array sizes.
Brilliant!
Note that you can swap without temp variables:
for( 0 .. $#$ref ) {
my $p = $_ + rand( $n-- );
@{$ref}[$p,$_] = @{$ref}[$_,$p];
}
You can even use
List::Util 'shuffle':
sub my_shuffle2 {
my $ref = \@_;
use List::Util 'shuffle';
@{$ref}[0..$#$ref] = shuffle(@$ref);
return unless defined wantarray;
return wantarray ? @{ $ref } : $ref;
}
Caution: Contents may have been coded under pressure.