Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Randomize an array

by BlaisePascal (Monk)
on Sep 08, 2000 at 00:09 UTC ( #31469=note: print w/replies, xml ) Need Help??

in reply to Randomize an array

How random do you want it, and what do you mean by "randomize"? I assume you want a random permutation, all permutations equally likey.

The traditional solution is something like:

for $i ($#array..0) { my $j = rand($i); @array[$i,$j] = @array[$j,$i]; }
This does @array swaps, and can be shown (see Knuth) that all permutations are equally likely -- assuming I haven't made any coding mistakes

This is probably the fastest randomization algorithm, although various implementations might be faster than mine.

Replies are listed 'Best First'.
RE: Re: Randomize an array
by merlyn (Sage) on Sep 08, 2000 at 04:58 UTC
      That's what I get for reading too much of the Perl6 RFCs... I could have sworn that ($high..$low) would count down, not up...

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2023-05-30 17:25 GMT
Find Nodes?
    Voting Booth?

    No recent polls found