Simply put when you shuffle from all of you liked songs you will mostly get the same tracks over and over - some tracks will stay hidden forever, - pretty weird and annoying.
It seems to stem from issues in relation to this post, ie. sql queries and caching to prevent too much CPU use on their end.
They perform some analysis to increase the "perceived randomness" - e.g., if the true random seed picks the same artist twice in a row (totally possible), pick another song by a different artist, or else people will perceive the shuffle as not "random" enough.
Unfortunately I don't have the source for this right now, but I'm sure someone will hop in and provide it if I'm wrong about this :)
That was hugely frustrating, but we would get user reports of the random button being buggy when e.g. the user gets 2 tracks of the same album/artist one after the other.
Of course that can happen if we truly randomize your content !
So we switched to a pseudo random algorithm that tries to have consecutive tracks from different album/artists.
edit: Did a search, seems like there's quite a few problems (only playing recently added songs, only playing 100 songs out of the playlist, etc.). I know google music has also had long standing issues with shuffle play - and in fact I left it over these kind of issues. Is it really difficult to implement a shuffle?!
This may, of course, have changed. My experiments while (badly) implementing librespot's shuffle functionality were a few years ago now.
When I use the Amazon app under the same conditions, I often hear a track I haven't heard for a long time. Which is what I'd expect when random sampling from 200 hours of music.
(I don't use playlists, as they're simply too much work.)