# File lib/backports/1.8.7/array.rb, line 168
  def sample(n = Backports::Undefined)
    return self[Kernel.rand(size)] if n == Backports::Undefined
    n = Backports.coerce_to_int(n)
    raise ArgumentError, "negative array size" if n < 0
    n = size if n > size
    result = Array.new(self)
    n.times do |i|
      r = i + Kernel.rand(size - i)
      result[i], result[r] = result[r], result[i]
    end
    result[n..size] = []
    result
  end