The Summary Version
It is random, but the order is only shuffled once, when you turn random play on. If you want to re-shuffle the order, turn random play off and then on again.
The Detailed Version
I don't think this is a bug, it's a feature. Though I can understand how it might seem broken.
iTunes doesn't shuffle the order of the tracks every time you hit play (or any other control button). Another way of saying this is: it uses the same seed for your playlist every time until you tell it to use another seed.
This may seem contrary to the idea of shuffle but it actually serves a purpose: it lets the skip back and skip forward buttons work in a manner that makes sense. I can move back 5 songs while it's on shuffle to hear the song I heard 5 songs ago, and then iTunes plays through all the songs I just heard to get me back to the spot I was at before going back 5 songs.
I do believe the ordering is truly random the first time it's generated. The problem is it's never obvious how to re-generate the ordering after that so your brain, which is really good at recognizing patterns as that's a handy survival skill when you're hunting and gathering, starts to learn the order over time. It starts to find patterns.
You can see this is the case with this little experiment. Set iTunes to shuffle your entire library. Pick a track. Play 5 tracks and write them down. Now pick any other track and let iTunes play one or two songs after that. Now go back to your first track and play from there again. It'll play that track and the same five after it that you wrote down. Changing tracks didn't reseed the random number generator.
The traversal through your tracks is truly random, but that random order isn't refreshed often enough so it starts to feel non-random.
So how do you get iTunes to generate a new shuffle order?
You uncheck and recheck the shuffle button. Doing this causes iTunes to recreate the random traversal path through your playlist (or entire library). It re-seeds the random number generator.
You can convince yourself this is true with a little experiment. Take an album that has track numbers in the meta data and select tracks 1 through 5 then select File -> New Playlist from Selection... from the menu. You'll now have a playlist with 5 songs in it.
Select that playlist and make sure that the shuffle button is unlit and that the track numbers are showing in the window. iTunes will show you the tracks in order: 1, 2, 3, 4, 5.
Now hit the shuffle button.
iTunes will show you the tracks out of order. I get: 4, 2, 1, 3, 5.
Now hit the shuffle button to turn it off. And turn it on again.
I now get: 5, 2, 3, 4, 1.
Repeat as many times and needed to convince yourself that iTunes is actually regenerating a random traversal sequence through the tracks in your playlist.
It's the same thing for traversing your entire library: if you never uncheck and recheck the shuffle button the order never gets regenerated so things will start to seem non-random. After I unchecked and rechecked shuffle and began playing my entire library from my original starting track from my second paragraph above I got 5 different songs after it this time. So the order was changed, it's just less obvious when you're looking at your entire library instead of a playlist.
There's a caveat to all of this: iTunes DJ (aka Party Shuffle) works differently. With Party Shuffle you can influence the selection so that there's weighting given to more popular songs in your library. This obviously isn't random playback. So if you want truly random playback you want to shuffle your entire library from the Music view in the sidebar, not the iTunes DJ view. And you want to uncheck and re-check that shuffle button before each listening session to keep it truly unpredictable.
Best Answer
iTunes doesn’t seem to exhibit any sort of smart searching built into the search box. Possibly, the best way to deal with these things is to use an external tool.
In my case, I have Coversutra (not free), that allows you to press “tab” (can be changed) to select different things:
I know there are free alternatives that can possibly do the same thing.
An additional alternative could be using an AppleScript and Automator to “ask” for the values… but that might be too much.
Something like that, if you can make automator (or the script) to ask you for the two “some” values, you’re set.
My opinion: iTunes should support spotlight like search strings!
UPDATE Ok, you’re right about that one, Coversutra (and others) all use iTunes “syntax” which is… no syntax.
Spotlight, however, is a different beast.
In trying to replicate your scenario, I’ve found that I have two “artists” that are similar in name: Metallica and Metalium. They both contain “Meta” in their names.
So when I search for artist “meta” I get both, which is annoying, because I really don’t like Metalium that much…
So I have two solutions for you:
a. Use Launchbar (or quicksilver), to quickly find the artist (this is a nice way to do it and what I really use most of the time when I want to find a song or an artist, it works faster than anything else). I use Launchbar. Pressing enter there creates a temporary playlist (called Launchbar) that contains all the tracks in question, but you could have dig a little bit more if you wanted an album or song. Very easy.
b. Use Spotlight:
This brings both bands:
but this excludes the unwanted one:
Not the best but… what can we do :)