[ create a new paste ] login | about

Link: http://codepad.org/yid2H2CZ    [ raw code | output | fork ]

tkenichi - Ruby, pasted on Jun 14:
def var1(a)
	sum = 0.0
	sumsq = 0.0
	a.each{|v|
		sum += v
		sumsq += v*v
	}
	ave = sum / a.size
	return sumsq / a.size - ave * ave
end

def var2(a)
	sum = 0.0
	a.each{|v|
		sum += v
	}
	ave = sum / a.size
	sum = 0.0
	a.each{|v|
		sum += (v-ave)*(v-ave)
	}
	return sum / a.size
end

def var3(a)
	sum = 0.0
	diff = 0.0
	a.each{ |v|
		y = v - diff
		t = sum + y
		diff = (t-sum)-y
		sum = t
	}
	ave = sum / a.size
	sum = 0.0
	diff = 0.0
	a.each{ |v|
		y = (v-ave)*(v-ave) - diff
		t = sum + y
		diff = (t-sum)-y
		sum = t
	}
	return sum / a.size
end

a = Array.new
100000.times{
	a << rand
}

p var1(a)
p var2(a)
p var3(a)


Output:
1
2
3
0.0830494806877252
0.0830494806877238
0.0830494806877233


Create a new paste based on this one


Comments: