将值扩展到算术平均值

时间:2012-08-20 19:54:16

标签: statistics

可能是一个非常愚蠢的问题,我不确定它是属于这里还是属于数学。

我的问题:

我有几个X类型的元素,它们有一个布尔属性Y。

要计算Y为真的元素百分比,我计算Y为真的所有X,并将其除以元素数。

但我不想一直迭代所有元素以更新该百分比值。

我的想法是:

如果我有3个元素的33%,并且我添加第四个,其中Y为真:

(0.33 * 3 + 1) / 4 = 0.4975

显然因为0.33而无效。

有没有办法在没有迭代的情况下获得准确的解决方案或保存Y为真的项目数量?

2 个答案:

答案 0 :(得分:2)

保留元素总数和“真实”元素总数。全局变量,对象成员变量等等。我假设在程序启动的某个时候,你有零元素。每次添加,删除元素或其布尔属性发生更改时,都会根据需要递增或递减这些计数。你永远不必迭代列表(除了可能用于测试),但代价是列表的每个更改都必须包括摆弄这些变量。

答案 1 :(得分:2)

你的想法不起作用,因为0.33不等于1/3。这是近似值。如果您采用确切的值,您会得到正确的答案:

(1/3 * 3 + 1) / 4 = (1 + 1) / 4 = 1/2

我的问题是,如果你可以存储33%的值而不进行迭代,为什么不只是存储1和3的值并计算它们?也就是说,只需保持真值和对象数的总计。当你得到新的时候增加。按需计算。没有必要每次都进行迭代。