在Ruby中保存无序数组的顺序

在Ruby中保存无序数组的顺序,ruby,arrays,shuffle,Ruby,Arrays,Shuffle,如果我说 a = [1,2,3] a.shuffle puts a …它给出[1,2,3]。如果我说 a=[1,2,3] a.shuffle! puts a …每次我说“放a”时,它都会给我一个新订单。所以我的问题是如何保存一个洗牌数组的顺序?如果第一次返回[3,1,2],则应保持此顺序。这有意义吗 这是我所说的一个例子。每次我给b打电话,结果都不一样 > a=[1,2,3] => [1, 2, 3] > b=a.shuffl­e! => [1, 3, 2] >

如果我说

a = [1,2,3]
a.shuffle
puts a
…它给出[1,2,3]。如果我说

a=[1,2,3]
a.shuffle!
puts a
…每次我说“放a”时,它都会给我一个新订单。所以我的问题是如何保存一个洗牌数组的顺序?如果第一次返回[3,1,2],则应保持此顺序。这有意义吗

这是我所说的一个例子。每次我给b打电话,结果都不一样

> a=[1,2,3]
=> [1, 2, 3]
> b=a.shuffl­e!
=> [1, 3, 2]
> b
=> [1, 2, 3]
> b
=> [2, 1, 3]
> b
=> [1, 3, 2]
> b
=> [3, 2, 1]
“b”似乎是指函数a.shuffle,而不是shuffle本身的结果

答案是:


使用TryRuby.org上的在线解释器时出现问题。在我的电脑上使用交互式Ruby解释器可以得到正确的结果。谢谢大家的帮助

你需要这样的东西吗:

a = [1,2,3]

b = a.shuffle

puts b

a.shuffle
返回
a
的洗牌,但不会更改
a
本身,因此您需要将结果分配给不同的变量(或者分配给
a
,如果您需要的话)。你需要调用a.shuffle如果希望方法直接更改
a


请参见

使用TryRuby.org上的在线口译员时出现的问题。在我的电脑上使用交互式Ruby解释器可以得到正确的结果。谢谢大家的帮助

a=[1,2,3]
b=a.shuffle放置b
?保存订单是什么意思?我认为,如果你给出一些周围的代码,比如你如何定义和调用这个代码eTC,这会有所帮助。它不会在你每次
下一个
时给你一个新的订单;每次运行代码时,它都会给您一个新的随机顺序,因为这会使它成为
shuffled。我的意思是,如果它将数组洗牌到[3,1,2],那么每次调用a之后,它都会给出[3,1,2]。我的错是,它应该是
shuffle
而不是
shuffled
谢谢,这并没有保持a洗牌的顺序。每次调用b时,它都会给出不同的结果。如果我说a,shuffle!每次调用数组时,它都为数组提供一个随机顺序。我如何保持数组的顺序?我想我不知道你的意思。呼叫a.shuffle
洗牌数组并将结果存储回
a
。你想保持什么顺序?>a=[1,2,3]=>1,2,3]>b=a.Shuffle-e!=>[1,3,2]>b=>[1,2,3]>b=>[2,1,3]>b=>[1,3,2]>b=>[3,2,1]哇,真是个令人沮丧的错误。我将把这个复制到问题中。