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))
誰かが最初のアルゴリズムがどのように間違っているか説明できますか? (つまり、ランダムなシャッフルを生成しません)。