【发布时间】:2012-08-24 03:47:03
【问题描述】:
在阅读有关 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))
有人可以解释第一个算法是如何不正确的吗? (即不产生随机洗牌)。
【问题讨论】: