class PlanOut::WeightedChoice
Public Instance Methods
simple_execute()
click to toggle source
# File lib/plan_out/op_random.rb, line 54 def simple_execute choices = @parameters[:choices] weights = @parameters[:weights] return [] if choices.length() == 0 cum_weights = Array.new(weights.length) cum_sum = 0.0 weights.each_with_index do |weight, index| cum_sum += weight cum_weights[index] = cum_sum end stop_value = get_uniform(0.0, cum_sum) i = 0 cum_weights.each_with_index do |cum_weight, index| return choices[index] if stop_value <= cum_weight end end