@eniko just to emphasize this point:
good procedural generation IS really really hard. takes a strong mind to get everything as close to the target as possible.