Я пытаюсь найти более эффективный подход для выбора определенной зашифрованной последовательности из большой библиотеки - PullRequest
0 голосов
/ 25 марта 2020

Я использую Python для проекта, и для части этого проекта мне нужно получить зашифрованную перестановку библиотеки строк, которую я подаю в метод. Я хочу получить воспроизводимый результат, поэтому в настоящее время я использую метод перестановки библиотеки itertools, а затем перебираю его, пока не достигну определенной перестановки. Тем не менее, циклически проходить через кучу раз явно не лучше для времени, особенно в схватках с большим количеством элементов (20+). Есть ли кто-нибудь, кто работал с itertools раньше, кто может сказать мне, как найти схватку быстрее, или есть кто-то, кто может дать мне лучший способ шифрования?

Код ниже VVV

    import itertools
from itertools import permutations
def genkey(library, toget):
    scrambled = permutations(library)
    iternum = 0
    for fin in scrambled:
        if iternum == toget:
            return(list(fin))
        else:
            iternum += 1
    print('Permutation out of range')
    return

Моя главная цель - просто найти способ, которым я могу получить воспроизводимую схватку, которая кажется случайной, но может быть воспроизведена на основе введенного мной целого числа. Я открыт для любых предложений.

1 Ответ

2 голосов
/ 25 марта 2020

Звучит так, как будто вы можете использовать модуль random:

import random

random.seed(1)    # Choose another number here if you want a different outcome
scrambled = random.sample(library, k=len(library))

Каждый раз, когда он запускается с тем же параметром, что и seed(), вы должны получить одно и то же значение для scrambled.

...