Dus*_*tin 1 python random lines
我一直在乱用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)
Run Code Online (Sandbox Code Playgroud)
编辑:在另一个答案中建议的改组方法是错误的.请参阅评论及其中的链接.这是一个更正确的shuffle示例:
end = len(lines) - 1
for i in range(end + 1):
choice = random.randint(i, end)
lines[i], lines[choice] = lines[choice], lines[i]
Run Code Online (Sandbox Code Playgroud)
在这次洗牌之后,假设完美的随机性randint
,线的位置与其在洗牌之前的位置完全不相关.在另一个答案中使用朴素算法,情况并非如此.两次洗牌都采用相同数量的操作.