Random structure generation really is a big thing to do. There are way too many parameters and possible things to happen so all it comes down to is the imagination of the developer.
I have tried generating a simple city, which took quite a while to accomplish, while I am not 100%ly happy with it, I think this is as simple as it can get: https://github.com/iMarv/CityGenerator