module Minireq::Dsl::Pert

Public Instance Methods

calc_e95(efforts, rmserrs) click to toggle source

@param efforts [Array<Float>] @param rmserrs [Array<Float>] @return [Hash<>] effort, error and effort 95%

# File lib/minireq/dsl/pert.rb, line 20
def calc_e95(efforts, rmserrs)
  eff = efforts.inject(0, :+)
  err = Math.sqrt(rmserrs.inject(0) { |sum, i| sum + i**2 })
  e95 = eff + 2 * err
  {effort: eff, error: err, e95: e95}
end
calc_pert(o:, m:, p:) click to toggle source

@param o [Integer] optimistic esitmation @param m [Integer] most usual @param p [Integer] pessimistic @return [Hash<effort, rmserr>] average effort and root-mean-square error

# File lib/minireq/dsl/pert.rb, line 11
def calc_pert(o:, m:, p:)
  effort = (o + m * 4 + p) / 6.0
  rmserr = (p - o) / 6.0
  {effort: effort, rmserr: rmserr}
end