very nice, although id suggest one thing
link to a dw to hold all of the previously generated passwords, and then check if the generated password has been generated before:
if so, run the statement again
if not, store the password in the dw and output the result