Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: How do I shuffle an array?

by hossman (Prior)
on Jun 15, 2003 at 22:50 UTC ( #266082=note: print w/replies, xml ) Need Help??

in reply to How do I shuffle an array?

The List::Util module provides a shuffle function which implements the Fisher-Yates shuffle.
use List::Util qw(shuffle); my @data = (0..51); my @cards = shuffle @data;

Replies are listed 'Best First'.
Re: Answer: How do I shuffle an array?
by wufnik (Friar) on Jun 16, 2003 at 11:01 UTC
    I prefer japhy's one-liner, which achieves shuffling via fisher-yates:

    @entry[-$i,$j] = @entry[$j,-$i] while $j = rand(@entry - $i), ++$i < @ +entry;
    as an aside - this is in the snippets section. would it not be nice to use snippets, or grinder's fabled categorized snippets library, as a source of data for categorized q&a?



    -- in the world of the mules there are no rules --
Re: Answer: How do I shuffle an array?
by gmpassos (Priest) on Jun 16, 2003 at 03:31 UTC
    Independet way:
    my @data = 0..51; my @cards = sort { (-1,1)[rand(2)] } @data ;

    Graciliano M. P.
    "The creativity is the expression of the liberty".

Re: Answer: How do I shuffle an array?
by jdhedden (Deacon) on Dec 05, 2006 at 17:05 UTC
    Math::Random::MT::Auto has a shuffle function, as well:
    use Math::Random::MT::Auto 'shuffle'; my @cards = 0..51; shuffle(\@cards);

    Remember: There's always one more bug.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://266082]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2022-05-29 10:44 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (101 votes). Check out past polls.