Whenever you evaluate the randomness of an algorithm, it's very important to do scientific, mathematically rigorous tests. Humans are very bad at judging randomness, (in my opinion, this is at least partially due to a tendency for us to look for patterns in our environment, causing us to see apparently non-random patterns even in completely random sequences). Bear in mind that even a completely random algorithm might pick zero of your 84 U2 songs for your playlist, just like there is a certain (albeit low) probability of rolling double-sixes ten times in a row on a pair of dice.
However, in your case, I think things are much simpler. When you apply a limit to a smartlist (~t=120) the tracks that get past the limit are dependent on the sort order of the smartlist or view. In your case, you should be getting the exact same tracks every time your playlist. It sounds like you might be sorting by track number, causing you to get 120 minutes of the lowest numbered tracks in your collection. You need to add the random sort modifier to your smartlist :-)