我发现knuth随机播放是从头到尾完成的,例如
from random import randrange
def knuth_shuffle(x):
for i in range(len(x)-1, 0, -1):
j = randrange(i + 1)
x[i], x[j] = x[j], x[i]
return x
但是,我在考虑为什么我们不能从头到尾使用它。像这样:
from random import randrange
def knuth_shuffle(x):
for i in range(0, len(x), 1):
j = randrange(i, len(x))
x[i], x[j] = x[j], x[i]
return x
我发现第二个函数的运行时间总是比第一个函数长。有人对此有一些线索吗?
答案 0 :(得分:0)
您的替代解决方案看起来完全可以。它的作用相同,但是从左到右。 我已经尝试过了(在多达1000000个元素上的列表上),但是我没有注意到运行时间有任何显着差异。 您洗牌有多大? 运行时间有何不同? 它们是否取决于列表的大小?