我转储了RUBY_VERSION =>的值1.8.7
每次,[1,3,5] .shuffle的值也是[1,3,5] 我必须在它前面添加一个srand(Time.now.to_i)或srand()以使其随机... 我以为srand会被自动调用?但也许不是在.cgi环境中?
如果我使用irb,并查看[1,3,5] .shuffle,并在每次结果不同时退出并重新输入irb。
顺便说一下,ri shuffle
没有给出任何东西,而且Array和Enumerable文档没有列出随机播放或随机播放!要么......?
答案 0 :(得分:0)
由于我无法查看你是如何检查它是否已经改变,我不能肯定地说,但我希望问题必须处理你是如何检查它是否已经改变。如果使用shuffle,则不会改变原始数组。因此,如果检查原始数组的值而不是返回的结果,则每次返回的方法都会返回相同的值
RUBY_VERSION # => "1.8.7"
a = [1,3,5]
# a does not change, because shuffle does not mutate
a.shuffle # => [5, 1, 3]
a # => [1, 3, 5]
# now a does change, because shuffle! does mutate
a.shuffle! # => [5, 3, 1]
a # => [5, 3, 1]
此外,还有文档http://ruby-doc.org/core-1.8.7/classes/Array.html#M000335