Almost all of my ideas are completely random and most of them happen in the shower.

It's really hard to explain how to come up with new ideas because everyone is different, but I have a few tips:
1. Start small - I have new ideas almost daily. Almost all of them are a huge undertaking that would take a long time for just me to build. Sometimes the best idea is a subset of your initial idea that you can prototype in a weekend.
2. Work with 1 or 2 other people - Not everyone can be the idea guy. The best groups of people that build cool stuff, IMHO are 2 or 3 people. Usually there's an idea person, someone who is the main implementer and the seller of the idea. Sometimes one person is all of those (not usually). Sometimes two people cover those 3 things. If you're lucky, you can find 3 people who focus in those 3 areas, but all share across them as well. Bottom line, it's a lot easier to prototype out a cool idea with 2 or 3 people than it is just yourself. Sometimes it's easy to fool yourself that an idea is really great because you have nobody to bounce it off of. All that said, go over 3 people and you start to get too many cooks in the kitchen.
3. Keep up on current events and technologies - Not much to explain there.
4. Talk to people that have nothing to do with your profession - I usually talk to my parents about ideas. They have no clue about anything I do. This usually gives you some perspective on your idea and can help strengthen your weaken your idea.
5. Realize someone's already thought of your idea - It is most likely that your idea has already been thought of and that someone is already working on it. Fast prototyping is key. But also, the correct impelmentation is important. Being first is great, but being second doesn't mean you're going to lose. Prove a concept quickly to make sure your idea will work (or fail quickly) and move onto thinking the whole implementation through.
I could probably go on and on, but I won't. Hope some of that helps!