以前の投稿でBasicObject#instace_evalを使って、平均値avgと標準偏差sdを求める例を紹介しました。 avg = [56, 87, 49, 75, 90, 63, 65].instance_eval { inject(:+) / size } # => 69 scores = [56, 87, 49, 75, 90, 63, 65] sd = scores.instance_eval do avg = inject(:+) / size sigmas = map { |n| (avg - n)**2 } Math.sqrt(sigmas.inject(:+) / size) end sd # => 14.247806848775006