Я уже давно возился с рандомизацией в python, но по какой-то причине я застрял здесь. Может быть, это слишком поздно ночью...
Во всяком случае, я ищу быстрый простой метод в Python;
Я чувствую себя немой здесь... Любая помощь приветствуется! Благодарю!
Используйте random.shuffle
для рандомизации последовательности:
import random
with open('filename', 'rb') as infile:
lines = infile.readlines()
random.shuffle(lines)
with open('newfilename', 'wb') as outfile:
outfile.writelines(lines)
Изменить: метод перетасовки, предложенный в другом ответе, неверен. См. Комментарии и ссылки в нем. Вот более верный пример тасования:
end = len(lines) - 1
for i in range(end + 1):
choice = random.randint(i, end)
lines[i], lines[choice] = lines[choice], lines[i]
После этого перетасовки, предполагая отличную случайность от randint
, положение линии полностью не сопоставимо с ее положением перед тасованием. Используя наивный алгоритм в другом ответе, это не так. Оба перетасовки выполняют одинаковое количество операций.