in reply to Music shuffling
Surprisingly, (that is, against my own intuition) it does seem remarkably fair.
If you do just N * 2 cycles (-I=100) it occasionally only picks 48 or 49 of the 50 possibles, but other times it will have picked all 50, which seems well within the bounds of probability. And if you run it for 1e6 cycles, the distribution seems very even. Given the lousy performance of the default rand on my system, it again all seems to be well within statistical boundaries:
#! perl -slw use strict; my @tracks = 1 .. 50; my %picks; our $I ||= 1e5; for ( 1 .. $I ) { push @tracks, splice @tracks, rand( @tracks/2 ), 1; printf "$tracks[ -1 ] " unless $picks{ $tracks[ -1 ] }; $picks{ $tracks[ -1 ] }++; } print "\nPercentage picked: ", keys( %picks ) / @tracks * 100; printf "track %2d picked %5d times\n", $_, $picks{ $_ } for sort{ $picks{ $b } <=> $picks{ $a } } keys %picks; __END__ c:\test>junk6 -I=1e6 1 14 18 23 7 5 28 26 3 16 33 36 8 17 30 4 40 24 2 39 34 9 35 11 46 25 47 15 49 37 50 19 41 6 38 21 10 20 44 13 43 12 27 42 45 29 22 31 48 32 Percentage picked: 100 track 14 picked 20145 times track 35 picked 20124 times track 25 picked 20117 times track 12 picked 20109 times track 40 picked 20104 times track 10 picked 20102 times track 30 picked 20087 times track 4 picked 20086 times track 11 picked 20075 times track 16 picked 20073 times track 47 picked 20068 times track 18 picked 20065 times track 2 picked 20050 times track 7 picked 20045 times track 26 picked 20041 times track 24 picked 20038 times track 39 picked 20038 times track 45 picked 20038 times track 20 picked 20031 times track 48 picked 20031 times track 8 picked 20029 times track 38 picked 20027 times track 5 picked 20021 times track 6 picked 20015 times track 15 picked 20014 times track 28 picked 20002 times track 13 picked 19985 times track 34 picked 19981 times track 50 picked 19980 times track 9 picked 19977 times track 17 picked 19976 times track 37 picked 19975 times track 32 picked 19966 times track 23 picked 19964 times track 21 picked 19961 times track 1 picked 19957 times track 41 picked 19953 times track 36 picked 19947 times track 42 picked 19946 times track 44 picked 19936 times track 3 picked 19934 times track 43 picked 19931 times track 49 picked 19921 times track 29 picked 19914 times track 27 picked 19901 times track 31 picked 19889 times track 19 picked 19887 times track 22 picked 19879 times track 46 picked 19874 times track 33 picked 19791 times
That said. Shuffling once and then just picking from the front would seem to be easier.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Music shuffling
by oko1 (Deacon) on Jul 08, 2008 at 16:27 UTC | |
by BrowserUk (Patriarch) on Jul 08, 2008 at 16:49 UTC | |
by oko1 (Deacon) on Jul 08, 2008 at 17:49 UTC |