passwd(len=8, count=1, seed=0) = { if (len <= 4, print("password too short, minimum len=4"); return(), seed, setrand(seed)); my (C=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789","!\"#$%&'()*+,-./:;<=>?@[]^_{|}~"], P, j); for (i=1, count, K = vector(#C); P = ""; for (l=1, len, K[j = random(#C)+1]++; P = concat(P, Strchr(Vecsmall(C[j])[random(#C[j])+1])) ); if (prod(z=1, #K, K[z]), print(P), i--) \\ if password contains all char classes print else redo ); } addhelp(passwd, "passwd({len},{count},{seed}): Password generator, optional: len (min=4, default=8), count (default=1), seed (default=0: no seed)");