If you want a quickie reference guide to procedural content generation, you want to look at
Mad Libs. You just have to figure out what the sentence should be, and the list of items that makes sense in the blanks, and a random number generator to pick from those lists.
Basically, instead of coming up with the world, you come up with the rules on how the world should be made, and feed random numbers into that rule set.
It's best to start with something simple. Say you are making a space game, where the player controls star systems and attacks other systems to conquer them.
You can either design each system manually, say P3X-992 has 5 planets, 2 of which are habitable, and one is a gas giant. Or you can decide that a star system can have 0-10 planets, of which 20% are habitable, and 10% are gas giants, and then the random number generator decides that P3X-992 has 5 planets, 2 of which are habitable, and one is a gas giant.
It's harder to come up with the rulesets, but then it's easier to make the actual maps because the RNG does the rest. You just continue to scale it up, add complexity step by step.
Now to focus a bit more on DF. Obviously, I'm not the Toady One (as evidenced by my username), so I don't really know how it all works under the hood, but the basic concepts are pretty simple.
When generating the world, the first thing you need to do is decide the basic layout - oceans, mountains, plains, ect. You have to start at the bottom (no, not HFS), and work up. So we have parameters that say about how much of the world should be ocean (say, 20% - that's not like our world, but it does give more playable space). You can't just randomly turn 20% of the embark tiles into ocean, because that'll look wierd. They'll need to clump together. One giant ocean might look wierd, but it might also make sense, so we'll let the RNG handle it -- by adding a parameter to control how many oceans there are (and come up with rules on how to distribute the ocean tiles between them). It can't be a perfect circle or square or whatever because that, too, would look weird, so you have to come up with a formula to make it more jaggy and irregular -- and guess what, you can use more random numbers plugged into that formula! Yay!
So we haven't even gotten through laying down the surface, and we already have 2 parameters and a couple of places to throw random numbers. This gives you some control over what the final result looks like, but also ensures that no two generations will be exactly the same.
But wait, what if you
want it to look exactly the same? Well, if you're asking about how to do procedural generation, I'm going to assume you know that random numbers aren't random at all, and that they require a seed to ... randomize the results. Usually you use the time, but you can allow the user to input the seed -- just like DF! Yay! Of course, if you want a random seed, then you initiate the random numbers with the time and have it spit out a random seed. Also Yay!
Long story short, you start small and keep building up rules on how the game should run itself, or how the playing field should be made. Eventually, it will get complex enough that it will take all night to gen a world, only to find out everything interesting is dead and you have to start over
---------
The
Game of Life is an excellent example of how a few simple rules can create complex results. Procedural content is just the Game of Life writ large, and with random numbers thrown in. I know this probably isn't quite what you were looking for, but