Самое простое, чтобы сгенерированные случайные последовательности не повторялись - сложить их в set().
Например:
import random
def generate_random_massive(col1, col2, size):
results = set()
while len(results) < size:
cs = random.randint(int(col1),int(col2))
symbols = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_'
rand = (''.join(random.choice(symbols) for i in range(cs)))
results.update({rand})
return results
if __name__ == '__main__':
col1 = 16
col2 = 16
size = 1000
rands = generate_random_massive(col1, col2, size)
print(rands)
Но называть это паролями и хранить в таком виде я бы не советовал…