Class: ReqSample::Hash

Inherits:
Hash
  • Object
show all
Defined in:
lib/reqsample/hash.rb

Overview

Custom Hash methods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.weighted(h) ⇒ Object



4
5
6
7
# File 'lib/reqsample/hash.rb', line 4

def self.weighted(h)
  sum = h.values.reduce(:+)
  Hash[h.map { |k, weight| [k, (Float weight) / sum] }]
end

Instance Method Details

#weighted_sampleObject



9
10
11
12
13
14
15
# File 'lib/reqsample/hash.rb', line 9

def weighted_sample
  result = max_by do |_, weight|
    rand**(1.0 / weight)
  end

  block_given? ? yield(result) : result.first
end