数组中的奇怪行为。随机元素

时间:2012-03-14 23:51:13

标签: ruby arrays

我正在使用数组进行一些操作,就像这样(非常简单)

a = [1, 2, 3, 4]
b = [1]
b.push((a-b).sample)
=> [1, 2]

好的,让我们看一下它的价值

b
=> [1, 2]
b
=> [1, 3]
b
=> [1, 2]
b
=> [1, 4]    

我不明白为什么b会改变。我认为我从a和b之间的差异中取出了一个随机元素,并将其附加到b,所以......我错在哪里?

编辑:

今天是新的一天,神奇的是,相同的代码运行正常....这是一个谜 谢谢所有!

1 个答案:

答案 0 :(得分:0)

这是你期望得到的吗?

a = [1,2,3,4]
b = []
0.upto(3) do
    b.push((a-b).sample)
    puts b
end

  #=>  [2]
  #=>  [2, 4]
  #=>  [2, 4, 1]
  #=>  [2, 4, 1, 3]