Prev / Next

2004-04-26 / 配列のランダム化

ruby-list 39588 からのスレッドより

Simple に

class Array
  def randomize
    sort_by{ rand(100) }
  end

  def randomize!
    replace randomize
  end
end


速度を気にする場合

class Array
  def randomize!
    length.times do |i1|
      i2 = rand(length)
      t = self[i1]
      self[i1] = self[i2]
      self[i2] = t
    end
  end

  def randomize
    result = self.dup
    result.randomize!
    result
  end
end


comments powered by Disqus