After reading the comments in the rolling stats thread, I was inspired to make a system for generating random but fair stats for 5E. I put a first draft of the system into that thread, but have since revised/simplified it. These were my goals:
1. Make it impossible to generate a "bad character" not up to par(defined as the array/pointbuy listed in the PHB)
2. Keep the game balance between a well rolled character and a poorly rolled one within tolerable limits
3. Make the results as random as possible while achieving the first two goals.
4. Allow for rolling up a specific class, or to randomly determine stats before choosing a class.
With this system, the array or point buy is more or less the floor. The average result would correspond to an above average 4D6 drop lowest character, and a strong result will be lower than than a strong 4d6 drop lowest character.
Method I: rolling up a specific class
(In order)
1. Place a 15 in your primary offensive stat: Str for Barbarian, Fighter, and Paladin, Dex for Monk, Ranger and Rogue, Int for Wizard, Wis for Cleric and Druid, and Cha for Bard, Sorcerer and Warlock
2. Place a 15 in Con
3. Roll the other 4 stats in order, 4d6 drop lowest. Treat any roll less than 8 as 8, treat any roll higher than 16 as 16.
4. You may choose to replace or add to a stat depending on class:
Fighters may add +1 to Str or Con
Rogues add +1 to Dex or Con
Clerics may replace Str or Dex with a 14
Monks and Rangers may replace Wis with a 14
Paladins may replace Cha with a 14
Barbarians, Bards, Druids, Sorcerers, Warlocks, and Wizards can replace Dex with a 14
5. You may swap your main stat from step 1 with any other stat
6. If you choose not to replace a stat in step 4, you may roll an additional 4d6 drop lowest, and you can replace any stat with that roll(this roll can be higher than 16)
7. You may swap your Con with any other stat
Method II: random class generation
(In order)
1. Put 15 in Con
2. Roll the other 5 stats in order, 4d6 drop lowest, and treat any roll lower than 8 as an 8, and any roll above 16 as 16
3. If none of your rolled stats are above 14, replace your highest rolled stat with a 16(if there is a tie for your highest stat, you may either choose or randomly determine which becomes a 16)
4. Reroll your 2nd lowest stat(if there is a tie randomly determine which), and replace it with this new roll if it is higher(this roll can be higher than 16)
5. Based on your current stats, choose your class
6. You may choose to add to or replace a stat depending on class:
Fighters may add +1 to Str or Con
Rogues may add +1 to Dex or Con
Clerics may replace Str or Dex with a 14
Monks and Rangers may replace Wis with a 14
Paladins may replace Cha with a 14
Barbarians, Bards, Druids, Sorcerers, Warlocks, and Wizards can replace Dex with a 14
7. If you choose not to replace a stat in step 6, you may roll an additional 4d6 drop lowest, and you can replace any stat with that roll(this roll can be higher than 16)
8. You may swap your Con with any other stat