所以我有这个代码,它应该类似于在Ruby中改编的Fisher-Yates,但是我无法在第5行看到多重赋值。有人能澄清这里到底发生了什么吗?
def shuffling(arr = [])
length = arr.length
arr.each_with_index do |element, index|
i = rand(length)
arr[index], arr[i] = arr[i], arr[index]
end
arr
end
谢谢。
答案 0 :(得分:2)
你正在用当前索引翻转一个随机索引。
所以如果你有一个[2,4,5]
第一次通过index
为0(即元素2)。说i
= 1。
现在,该赋值使得index
等于0的value
索引,然后还有另一个index
为0的赋值等于索引的value
在1.
因此数组变为[4,2,5]