Module: Enumerable

Defined in:
lib/jocelyn/enumerable_methods.rb

Instance Method Summary collapse

Instance Method Details

#jostle(amount = 0.2) ⇒ Object

Raises:

  • (ArgumentError)


2
3
4
5
6
7
8
9
10
# File 'lib/jocelyn/enumerable_methods.rb', line 2

def jostle(amount = 0.2)
  raise ArgumentError, 'amount must be between 0 and 1' \
    unless (0..1.0).cover?(amount)

  items = map.with_index(1) do |item, i|
    [item, (i * 1.0 / size) * (1.0 - amount) + rand * amount]
  end
  items.sort_by(&:last).map(&:first)
end