I actually used (yet another) maze generation algorithm for an xbox360 game I worked on as a school project. The constraints were slightly different because we wanted cycles and no dead ends.
You put all the cells in a list and take them out at random. If there are 3 or more walls, tear down walls until there are less than 3. When you are done you cannot have any dead ends because a dead end must have three walls. Of course you can have unconnected loops, so you have to go through and tear down walls to connect unconnected segments when you are done.
I don't know what my point is.
Mazes are neat.