如何从数组中求平均值?

如果我有一个数组:

[0,4,8,2,5,0,2,6]

平均得到3.375。


当前回答

比.inject更快的解决方案是:

sum(0.0)/arr.size

参见这篇文章参考:https://andycroll.com/ruby/calculate-a-mean-average-from-a-ruby-array/

其他回答

Ruby版本>= 2.4有一个Enumerable#sum方法。

要获得浮点平均值,可以使用Integer#fdiv

arr = [0,4,8,2,5,0,2,6]

arr.sum.fdiv(arr.size)
# => 3.375

对于旧版本:

arr.reduce(:+).fdiv(arr.size)
# => 3.375
a = [0,4,8,2,5,0,2,6]
sum = 0
a.each { |b| sum += b }
average = sum / a.length

你可以试试下面的方法:

a = [1,2,3,4,5]
# => [1, 2, 3, 4, 5]
(a.sum/a.length).to_f
# => 3.0

打印数组。求和/数组。计数是我做到的方式

class Array
  def sum 
    inject( nil ) { |sum,x| sum ? sum+x : x }
  end

  def mean 
    sum.to_f / size.to_f
  end
end

[0,4,8,2,5,0,2,6].mean