0
的Python代碼Here'a片段:這是Python代碼的正確解釋嗎?
while i > 1:
i = i - 1
j = randrange(i) # 0 <= j <= i-1
items[j], items[i] = items[i], items[j]
return
我想在我的帕斯卡項目中使用這種算法。前三行對我來說是絕對清楚的,但是這個程序在第四行代碼中做了什麼?它是否將保留在j
上的隨機值分配給數組中的i
個插槽,然後向左移動(保持右側的「使用」值)?
如果這應該是Fisher-Yates shuffle,那就錯了。它應該是'j = randrange(i + 1)'(所以0 <= j <= i)。 – interjay 2014-11-23 15:15:46
這是Sattolo的算法,是F-Y洗牌的變體。 – rhjs 2014-11-23 15:19:08