Here's something which is nice and might be easy to remember:
StringJoin @@ RandomSample[#, Length@#] &@
Flatten@{IntegerString@RandomInteger[{10, 999}],
Capitalize /@ RandomWord[3],
RandomSample[Characters@"!@_%$^=+*.", 2]
}
Select examples:
"Tearless+PostdoctoralDragon=635" (*DEFINTIELY MY FAVORITE!!*)
"Workpiece.Monopolize908Moderate="
"Venereal854RebelliouslyProportionality%."
EDIT
To increase the entropy, you may want to make spelling mistakes. Here's a great way to produce pronounceable non-words:
spoilWord[word_String] :=
Transliterate@
Transliterate[word,
RandomChoice@{"Hebrew", "Arabic", "Japanese", "Korean","Greek"}
]
Example:
spoilWord@RandomWord[]
(*"matelialismeu"*)