Dlaczego ten algorytm tasowania jest nieprawidłowy?
Zanim przeczytałem o Fisher-Yates, to jest algorytm, który wymyśliłem:
def sort(arr):
for i in range(len(arr)):
swap(arr, i, rand.randint(0, len(arr) - 1))
Z mojego zrozumienia, jedyną różnicą między tym a Fisher-Yates jest to, że zamiast:
swap(arr, i, rand.randint(0, len(arr) - 1))
Powinienem napisać:
swap(arr, i, rand.randint(i, len(arr) - 1))
Czy ktoś mógłby wyjaśnić, w jaki sposób pierwszy algorytm jest niepoprawny? (tj. nie tworzy losowego losowania).