in reply to Randomize an array
Which I read to say Fisher-Yates is almost three times faster then the one-liner.DB<4> sub Shuffle{my $ar=shift; my $i=@$ar; while($i--){my $n=int ra +nd(1+$i); @$ar[$i,$n]=@$ar[$n,$i]}} DB<5> @a = ( 0..9999 ) DB<6> timethese( 1000, { FY => 'Shuffle(\@a)', SR => '@a=sort{(-1,1) +[rand 2]}@a' }) Benchmark: timing 1000 iterations of FY, SR... FY: 63 wallclock secs (61.93 usr + 0.00 sys = 61.93 CPU) @ 16 +.15/s (n=1 000) SR: 157 wallclock secs (155.34 usr + 0.00 sys = 155.34 CPU) @ + 6.44/s ( n=1000)
|
---|
Replies are listed 'Best First'. | |
---|---|
RE (tilly) 2 (one is worse): Re: Randomize an array
by tilly (Archbishop) on Sep 08, 2000 at 03:23 UTC | |
by Adam (Vicar) on Sep 08, 2000 at 03:34 UTC |