【发布时间】:2017-03-14 09:09:38
【问题描述】:
我并没有真正使用过方差计算,我也不知道会发生什么。其实我数学一点都不好。
我有一个包含 0-10000 范围内的 1000000 个随机数值的数组。
数组可能会变得更大,所以我使用 64 位 int 进行求和。
我试图找到关于如何计算方差的代码,但我不知道我是否得到正确的输出。
平均值为 4692,中位数为 4533。我使用以下代码得到方差 1483780.469308:
// size is the element count, in this case 1000000
// value_sum is __int64
double p2 = pow( (double)(value_sum - (value_sum/size)), (double)2.0 );
double variance = sqrt( (double)(p2 / (size-1)) );
我得到了合理的价值吗?
计算有什么问题吗?
【问题讨论】:
-
2.0 是双精度;你不需要投射它。由于 p2 是双精度数,因此您不需要在 sqrt() 的参数中进行强制转换。在不需要时避免强制转换——它们有时是必要的,但好的代码很少包含它们。
标签: c++ math statistics largenumber variance