I have an idea how it could be done in 3DGS. Lets suppose there is a town at the origin of the level (4 town levels with exits in each direction...one with exit to the east,one west...) Random() creates one of those 4 and a variable is set to check which town has been created. Then according to the town create the next level in the chosen direction with an entrance where the town exit is (3 levels,with exit at the other directions) and chooses from 3 to continue in a random direction. Then the 3-rd part,so that it wont rotate in a circle should check to see if in any direction there is a level,to place the exit of this level in the opposite direction,where its empty. This way if you make even more variations to the levels (eg. x2 for every direction or x3) the world will be diffrent every time and the chance of repeating the next start of the game will be minimal if you make more variations. I think Diablo isnt exatly like that. I think it chooses 2-3 random values at the start and creates the same world every time according to those random values. Eg , it chooses the towns exit to be to the east , and creates the following levels the same way as the last 'east' value was chosen.(Not only by the town but based on a few more levels)

PS.: The games with random levels were created years ago , now noone makes them that way and it is boring after you finish a game to start it again. Everything will be the same as the last time you played , except your character.


Extensive Multiplayer tutorial:
http://mesetts.com/index.php?page=201