好的人......我可以使用一些帮助来获取ruby中数组的中位数
这是我的代码:
def median(array)
array.sort! # sort the array
elements = array.count # count the elements in the array
center = elements/2 # find the center of the array
elements.even? ? (array[center] + array[center+1])/2 : array[center] # if elements are even take both the center numbers of array and divide in half, if odd...get the center number
end
不确定应用.to_f的位置,因为它不会返回任何需要浮动的内容。
由于
答案 0 :(得分:0)
我意识到你已经解决了自己的问题,但这个版本更清洁,更安全:
def median(array)
raise ArgumentError, 'Cannot find the median on an empty array' if array.size == 0
sorted = array.sort
midpoint, remainder = sorted.length.divmod(2)
if remainder == 0 # even count, average middle two
sorted[midpoint-1,2].inject(:+) / 2.0
else
sorted[midpoint]
end
end