Answers:
现在内置:
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
,请在调用shuffle之后添加一个。如果没有经过!
改组的数组,则返回该数组,并且可以进行分配。
对于ruby 1.8.6(不内置随机播放):
array.sort_by { rand }
sort_by
功能与javascript的sort函数(或针对此问题的ruby的sort函数)不同,后者仅在乎计算所得的数字是小于零,零还是大于零。而是sort_by
记住每个项目的计算值,然后按该值对项目进行排序。因此,在这种情况下,为每个项目分配一个随机数,然后按这些随机数对数组进行排序。
来自Backports Gem的代码仅适用于Ruby 1.8.6的数组。内置Ruby 1.8.7或更高版本。
class Array
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
def shuffle
dup.shuffle!
end unless method_defined? :shuffle
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
def shuffle!
size.times do |i|
r = i + Kernel.rand(size - i)
self[i], self[r] = self[r], self[i]
end
self
end unless method_defined? :shuffle!
end