Method code for $code_lib.random_password()

[Turn off line numbering]
  1: var len, out, con, vow, rare, num, c, caps, maxcaps, flag, last;
  2: 
  3: len = random(5) + 7;
  4: out = "";
  5: con = "bcdfghjklmnprst";
  6: rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"];
  7: vow = "aeiou";
  8: num = "1234567890";
  9: flag = random(15);
 10: maxcaps = random(4) + 2;
 11: while (strlen(out) < len) {
 12:     switch (flag) {
 13:         case 1:
 14:             c = num.random();
 15:             out += c;
 16:             flag = random(15);
 17:         case 2, 3:
 18:             if (rare) {
 19:                 c = rare.random();
 20:                 if (random(2) == 1)
 21:                     rare = setremove(rare, c);
 22:                 out += c;
 23:                 flag = random(15);
 24:             }
 25:         case 4 .. 8:
 26:             c = vow.random();
 27:             while (c == last)
 28:                 c = vow.random();
 29:             out += c;
 30:             flag = random(7) + 3;
 31:         case 9 .. 15, -1:
 32:             c = con.random();
 33:             while (c == last)
 34:                 c = con.random();
 35:             out += c;
 36:             flag = random(10);
 37:         case -15 .. -9:
 38:             c = con.random();
 39:             while (c == last)
 40:                 c = con.random();
 41:             out += uppercase(c);
 42:             flag = random(10);
 43:         case -8 .. -4:
 44:             c = vow.random();
 45:             while (c == last)
 46:                 c = vow.random();
 47:             out += uppercase(c);
 48:             flag = random(7) + 3;
 49:         case -3, -2:
 50:             if (rare) {
 51:                 c = rare.random();
 52:                 if (random(2) == 1)
 53:                     rare = setremove(rare, c);
 54:                 out += uppercase(c);
 55:                 flag = random(15);
 56:             }
 57:     }
 58:     last = c;
 59:     if (caps < maxcaps && random(10) == 1) {
 60:         caps++;
 61:         flag = -flag;
 62:     }
 63: }
 64: return out;

// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit

Tlon