Game development is now as much art as science, or rather the art of science. Even something as simple as how and when to use randomness can profoundly impact the fun of a game. Enter the observation of two different kinds of randomness: input and output randomness.
Input randomness is randomness that is decided BEFORE a player makes their strategy and decisions. Examples would include having a random number of enemies generated before the fight starts. While the number is random, knowing how many will show up actually lets the user decide to use different strategies and feel more in control.
Output randomness is often a big contributing factor to frustrating parts of gameplay. Examples here would consist of attacking an enemy, only to find out your attack completely missed out of sheer bad luck or an usually bad hit roll. This kind of behavior, while mathematically correct, often leaves users feeling like they were ‘robbed’ and that the game is cheating.
Games are increasingly using input randomness as a way to give users control. Even games that rely on output randomness often put their thumbs on the scales so that you do not lose as often as you’d like. In Civilization, if your unit with a 33% chance of hitting misses twice in a row, it’s guaranteed to hit on the 3rd try – even though real randomness wouldn’t behave like that.
Anyway, this is a great video about the different kinds of randomness.