def generate_sweetwords(num_sweetwords, known_passwords, pass_weights,
                        real_password, random_word_prob=RANDOM_WORD_PROBABILITY,
                        prepared_seeds=None,
                        tough_nut_prob=TOUGH_NUT_PROBABILITY):
    sweetwords = [real_password]  # initiate the honeywords with the sweetwords

    num_seeds = mod_count(num_sweetwords)
    if not prepared_seeds:
        rockyou_seeds = choose_rockyou(known_passwords, pass_weights, num=num_seeds).tolist()
    while len(sweetwords) < num_seeds:
        r = random.random()
        # generate a new word using 1 of 3 methods
        if (r < tough_nut_prob):
            new_word = generate_tough_nut()
        if r < random_word_prob:
            new_word = generate_word()
        else:
            if prepared_seeds:
                new_word = prepared_seeds.pop()
            else:
                new_word = rockyou_seeds.pop()

        if new_word not in sweetwords:
            # add the generated word
            sweetwords.append(new_word)

    # sweetwords with sqrt(n)-1 elements+password
    tweaks = generate_tweaks(num_sweetwords, sweetwords)
    random.shuffle(tweaks)
    return tweaks
def generate_sweetwords(num, password):
    seed_count = mod_count(num)
    seeds = generate_seeds(seed_count, password)

    sweetwords = generate_tweaks(num, seeds)
    random.shuffle(sweetwords)
    return sweetwords