class ReqSample::Hash

Custom Hash methods

Public Class Methods

weighted(h) click to toggle source
# 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

Public Instance Methods

weighted_sample() { |result| ... } click to toggle source
# 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