在我阅读 Fisher-Yates 之前,这是我想出的算法:
def sort(arr):
for i in range(len(arr)):
swap(arr, i, rand.randint(0, len(arr) - 1))
据我了解,这与 Fisher-Yates 之间的唯一区别在于:
swap(arr, i, rand.randint(0, len(arr) - 1))
我应该写:
swap(arr, i, rand.randint(i, len(arr) - 1))
有人可以解释第一个算法是如何不正确的吗?(即不产生随机洗牌)。