L-Systems
Invented by Aristid Lindenmayer, L-Systems started as a way to classify plants, but they have a long history in procedural generation. A L-System is basically a grammar: it follows a set of rules to replace symbols in the initial string, and then repeats the operation on those symbols.
L-Systems are less chaotic than some of the other popular procedural generation techniques. Substituting other symbols or rules creates different results, making it relatively easy to modify in a controlled way.
While turning the output of an L-System into a generated plant is an obvious use, that’s not the only possible output. L-Systems have been used to generate dungeons, describe growth patterns, and design buildings.
Here’s a handy explanation of how to use an L-System (with code!):
http://blog.rabidgremlin.com/2014/12/09/procedural-content-generation-l-systems/
https://github.com/rabidgremlin/Procedural-Generation-Examples