From: Jarkko Hietaniemi Date: Tue, 4 Sep 2001 12:04:16 +0000 (+0000) Subject: Update the FAQ now that Scalar-List-Utils 1.03 has shuffle(). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=45bbf655cf4c44e2bcace54d7637687816f35100;p=p5sagit%2Fp5-mst-13.2.git Update the FAQ now that Scalar-List-Utils 1.03 has shuffle(). p4raw-id: //depot/perl@11855 --- diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 826d793..7dcb881 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -1198,7 +1198,14 @@ lists, or you could just do something like this with an array: =head2 How do I shuffle an array randomly? -Use this: +If you either have Perl 5.8.0 or later installed, or if you have +Scalar-List-Utils 1.03 or later installed, you can say: + + use List::Util 'shuffle'; + + @shuffled = shuffle(@list); + +If not, you can use this: # fisher_yates_shuffle( \@array ) : # generate a random permutation of @array in place @@ -1213,6 +1220,10 @@ Use this: fisher_yates_shuffle( \@array ); # permutes @array in place +Note that the above implementation shuffles an array in place, +unlike the List::Util::shuffle() which takes a list and returns +a new shuffled list. + You've probably seen shuffling algorithms that work using splice, randomly picking another element to swap the current element with