In 2012 there was a call for participation in a Mario competition. I entered the procedural level generator category. The aim was the write a program that would create Mario levels for players to play. The interesting part of the competition was that you got to test the player before you generated the level. The player would play a generic level and you could observe the play before generating a level tailored to the player.
So if the player dies a lot you could make the level easier. If the player ignores enemies and treasures and prefers flow over completeness you could create a level that focuses on these aspects. The level generator I created encompasses all these aspects. For example, compare the following two jumps:
The former is used for players who died a lot whilst the latter is used if the player is somewhat competent. For players that seemed to like jumping I could create jump-tastic sections like:
For variety I added different sections like caves:
A typical map would look something like this:
In the competition I came third: http://www.marioai.org/LevelGeneration/Results