I use one or two silly phrases whenever I have to generate them. for eg. "Alice stole Bobs tarts". Phrase can be in any language and need not be gramatically correct. Longer the better.

For each different account I add one or two words.
For Bank of America it becomes "Alice stole Boa tarts"
For CitiBank "Alice stole Bobs tarts in the city".

I then distill or transform the phrase to a 8 or more character word:
AlStBoaTts or a(s\*TBoTacty. The transformation method is known only to me and I might use special random characters in between. Since I apply this method often, I remember it well.

B. important passwords:
These change rarely; root passwords, user passwords, etc.
Again transformed and long silly phrase, different for each account.
The phrase is noted down in an encrypted file (using vault)

C. unimportant passwords
these never change - for websites that require a password for the sake of a password)
I use one of four or five of my regularly reused passwords. (like abcd1234)