What I really want in a shuffling music player is for it to remember when I jump to one song after listening to some other song, conclude "hey, I bet that first song makes a good lead-in to that second song", and bias the shuffling to use that transition more often. Is there a player that will do that?
What I want, and will probably never get round to implementing, is Markov chain playlist generation. Collect play order from (high-quality, human-generated) playlists, then use them to build Markov chains of tracks that tend to be played after one another.