Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/extensions/array.rb

Instance Method Summary collapse

Instance Method Details

#sample(n = nil) ⇒ Object

Raises:

  • (ArgumentError)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/extensions/array.rb', line 3

def sample(n = nil)
  #based on code from https://github.com/marcandre/backports
  size = self.length
  return self[Kernel.rand(size)] if n.nil?

  n = n.to_int
  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