Method: Random::ArrayExtensions#shuffle!

Defined in:
lib/standard/facets/random.rb

#shuffle!Object

As with #shuffle but modifies the array in place. The algorithm used here is known as a Fisher-Yates shuffle.

a = [1,2,3,4]
a.shuffle!

a  #~> [2,4,1,3]

CREDIT Niel Spring



223
224
225
226
227
228
229
230
231
232
233
# File 'lib/standard/facets/random.rb', line 223

def shuffle!
  s = size
  each_index do |j|
    i = Random.number(s-j)
    #self[j], self[j+i] = self[j+i], self[j]
    tmp = self[j]
    self[j] = self[j+i]
    self[j+i] = tmp
  end
  self
end