답변:
지금 내장 :
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
을 주려면 셔플 호출 후 추가하십시오 . !
뒤섞인 배열이 없으면 반환되고 할당이 완료됩니다.
루비 1.8.6 (셔플이 내장되어 있지 않음) :
array.sort_by { rand }
sort_by
함수는 자바 스크립트의 정렬 함수 (또는 그 문제에 대한 루비의 정렬 함수)와 같이 작동하지 않으며 계산 된 숫자가 0보다 작은 지, 0보다 큰지 또는 0보다 큰지에 대해서만주의합니다. 대신 sort_by
각 항목에 대해 계산 된 값을 기억하고 해당 값을 기준으로 항목을 정렬합니다. 따라서이 경우 각 항목에는 임의의 숫자가 할당되고 배열은 해당 임의의 숫자로 정렬됩니다.
Ruby 1.8.6 용 어레이를위한 Backports Gem 코드 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