Procedural generation is the construction of content based on algorithms and calculations rather than by hand.
Often synonymous with "random generation", procedural generation is the usage of calculations and algorithms to create content, rather than referring to preset data.
The typical reason is to generate content mid-gameplay, which makes for a more unpredictable and unique experience in multiple playthroughs.
It is sometimes used in order to reduce the fill size of the game, especially during ages when memory constraints were higher, and there wasn't enough memory space to store pre-made levels and artworks.
Common elements that are subject to procedural generation in games include item attributes, enemy abilities, and level layouts.
Procedural generation specifically refers to the usage of algorithms to generate content, it is not necessary to be random. Pseudo-random generators with fixed seeds can be considered procedural generation despite producing identical results.