[Turn on line numbering]var len, out, con, vow, rare, num, c, caps, maxcaps, flag, last; len = random(5) + 7; out = ""; con = "bcdfghjklmnprst"; rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"]; vow = "aeiou"; num = "1234567890"; flag = random(15); maxcaps = random(4) + 2; while (strlen(out) < len) { switch (flag) { case 1: c = num.random(); out += c; flag = random(15); case 2, 3: if (rare) { c = rare.random(); if (random(2) == 1) rare = setremove(rare, c); out += c; flag = random(15); } case 4 .. 8: c = vow.random(); while (c == last) c = vow.random(); out += c; flag = random(7) + 3; case 9 .. 15, -1: c = con.random(); while (c == last) c = con.random(); out += c; flag = random(10); case -15 .. -9: c = con.random(); while (c == last) c = con.random(); out += uppercase(c); flag = random(10); case -8 .. -4: c = vow.random(); while (c == last) c = vow.random(); out += uppercase(c); flag = random(7) + 3; case -3, -2: if (rare) { c = rare.random(); if (random(2) == 1) rare = setremove(rare, c); out += uppercase(c); flag = random(15); } } last = c; if (caps < maxcaps && random(10) == 1) { caps++; flag = -flag; } } return out;
// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit