Skip to content

Instantly share code, notes, and snippets.

@mickm3n
mickm3n / generate_random_string.py
Created June 14, 2018 02:41
Python 2 generate random string with at least one character in each charset
def generate_random_string(length, charsets=[string.ascii_uppercase, string.ascii_lowercase, string.digits, string.punctuation]):
system_random = random.SystemRandom()
dividers = sorted(system_random.sample(xrange(1, length), len(charsets) - 1))
charset_lengths = [a - b for a, b in zip(dividers + [length], [0] + dividers)]
random_string = ''.join([''.join(system_random.choice(charset) for _ in range(charset_length)) for charset, charset_length in zip(charsets, charset_lengths)])
return ''.join(system_random.sample(random_string, len(random_string)))