Ruby自定义shuffle方法

时间:2014-07-16 14:15:30

标签: ruby shuffle

所以我有这个代码,它应该类似于在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

谢谢。

1 个答案:

答案 0 :(得分:2)

你正在用当前索引翻转一个随机索引。

所以如果你有一个[2,4,5]

的数组

第一次通过index为0(即元素2)。说i = 1。

现在,该赋值使得index等于0的value索引,然后还有另一个index为0的赋值等于索引的value在1.

因此数组变为[4,2,5]