我发现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我发现第二个函数的运行时间总是比第一个函数长。有没有人有什么线索?
发布于 2019-07-15 05:01:40
您的替代解决方案看起来完全没问题。它做同样的事情,但从左到右。我已经尝试过了(列表中的元素多达1,000,000个),我没有注意到运行时间上的任何显著差异。你会洗多大的单子?运行时间有什么不同?它们依赖于列表的大小吗?
https://stackoverflow.com/questions/57030583
复制相似问题