Trước khi tôi đọc về Fisher-Yates, đây là thuật toán tôi đã đưa ra:Tại sao thuật toán xáo trộn này sai?
def sort(arr):
for i in range(len(arr)):
swap(arr, i, rand.randint(0, len(arr) - 1))
Từ hiểu biết của tôi, sự khác biệt duy nhất giữa này và Fisher-Yates là thay vì:
swap(arr, i, rand.randint(0, len(arr) - 1))
Tôi nên viết:
swap(arr, i, rand.randint(i, len(arr) - 1))
Ai đó có thể giải thích cách thuật toán đầu tiên không chính xác? (ví dụ: không tạo ra ngẫu nhiên).