The doors are semi-random. Each level has a list of set doors and a pool of random doors. Doors from the random pool are added to the required set when the level is created. The doors are then shuffled to prevent the level from being memorised. This lets me keep the balance of each level where I want while adding a bit of uniqueness to each level.
Thanks for playing!