in reply to How do I shuffle an array?

i have solved the issue in my own way i am newbie so if there is any inefficiency in my code please point out...as "there is more than one way to do it"
my @array=('one','two','three','four','five','six'); &shuffle(\@array); sub shuffle{ my $array=shift; my $max=@$array; #print $max; foreach(@$array) { my $random=int rand($max+1); unless($random eq $max) { @$array[$random,$max]=@$array[$max,$random]; $max--; } } } print "@array\n";
** i also have a querry if i omit the $max-- what wrong will happen

Replies are listed 'Best First'.
Re: Answer: How do I shuffle an array?
by moritz (Cardinal) on Mar 05, 2008 at 13:33 UTC
    my $random=int rand($max+1); unless($random eq $max)

    The correct way to compare numbers is ==, not eq.

    And when you want to exclude $max from the range of random numbers, write my $random = int rand($max); in the first place.