Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: How do I shuffle an array?

by hossman (Prior)
on Jun 15, 2003 at 22:50 UTC ( [id://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?

    ttfn,

    ...wufnik

    -- 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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-04-25 16:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found