2015-01-19 2 views
-2

Существует около 100 команд, написанных в файле; каждая строка - это команда. Как я могу прочитать эти командные строки и выполнить их случайным образом? И, что более важно, как я могу воспроизвести процесс, когда возникла какая-то проблема (может быть, использовать тот же random.seed)?Как я могу выполнить случайную командную строку и воспроизвести процесс?

+1

К вашему второму вопросу - да, используйте то же самое «семя». К первому - что? – jonrsharpe

+0

Используйте случайное семя или одно, указанное некоторым пользователем. – txmc

ответ

1

Same rand.seed даст такую ​​же последовательность рандомизации, так что да.

Сперва просто прочитайте команды в массиве. Затем используя случайные числа между 0 и len (командный массив) - 1 выполните эту команду и удалите ее из массива.

cmds = file_handle.readlines() 
random.seed(seed_number) 
while (cmds): 
    item = 0 
    if (len(cmds) > 0): 
     item = random.randrange(len(cmds) - 1) 
    exec(cmds[item]) # This is terribly dangerous stuff, and ugly 
    cmds.remove(cmds[item]) 
+0

Почему бы не просто «random.shuffle (cmds)»? – jonrsharpe

+0

@jonrsharpe это тоже неплохо. Тогда вы, возможно, можете использовать функцию карты или представление массива '[do_something для чего-то в a_array]'. По какой-то причине я просто склоняюсь к рандомизации над целыми числами – Johan

Смежные вопросы