Given that there are no such things as truly random numbers with computers (unless you hook up a device that generate those, such as one based on radioactive decay), everything is fully predictable if you have all the information.
"Random" numbers are based on "seeds" that serve as the starting point for random number generator algorithms. Once the seed is known the exact sequence of "random" number is known. DF makes use of 4 such seeds, if I remember correctly, where one controls the geography, one creatures, one history, and one names. If all of them are provided the world generation SHOULD give the same result every time (provided all the other parameters, raws, etc. are the same). The geography seed (or just seed, as it's called) will affect everything else, so it's the "top" one. Change that one and everything else changes (a mountain changed into a plain changes the creatures that can appear, which scrambles the creature seed, civs may take account of this differing terrain and the history changes, changes to creatures through terrain or history scrambles the names).
If you don't specify any seeds when you generate a world the seeds are generated somewhat randomly. I don't know what method DF uses, but a common one is to base it off the current time reported by the OS.
After world generation there are some RNG (Random Number Generator) seeds that vary between each session, so presumably they're re-seeded each time you load a fortress.
The generation of embark and fortress levels are based on seeds stored in the DF data structures (I've failed to locate the embark level seeds, but even if you use DFHack to mess with the embark level pre embark, leaving the area to look at another one and then returning will regenerate it the same as it was originally), which is a very clever way to reduce the size of the saves to levels that would fit on a hard disk at the time the DF development started.
Thus, there are procedural rules within DF, but those are subject to random parameters values as well. Dorfs are described physically in raws, that state the number of arms, etc, but it gives a range for size. Attributes such as strength, dexterity, etc. are likewise described as ranges with the actual starting value being determined randomly.