我一直在乱用python随机一段时间,但出于某种原因,我被困在这里。也许现在已经太晚了......
无论如何,我正在寻找一种快速简单的Python方法;
我在这里感觉有点笨... 任何帮助表示赞赏!谢谢!
答案 0 :(得分:6)
使用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
的完美随机性,线的位置与其在洗牌之前的位置完全不相关。在另一个答案中使用朴素算法,情况并非如此。两次洗牌都采用相同数量的操作。