From 45bbf655cf4c44e2bcace54d7637687816f35100 Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Tue, 4 Sep 2001 12:04:16 +0000 Subject: Update the FAQ now that Scalar-List-Utils 1.03 has shuffle(). p4raw-id: //depot/perl@11855 --- pod/perlfaq4.pod | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 826d793a71..7dcb881a46 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 -- cgit v1.2.1