2

我很好奇,从这个代码片段中得到的平均值是多少?蓄能器是空的。

boost::accumulators::accumulator_set<
    int,
    boost::accumulators::features<boost::accumulators::tag::mean>
> Accumulator;

int Mean = boost::accumulators::mean(Accumulator);

当我测试它时,平均值是非零的。有什么方法可以告诉我平均值是针对空数据集的吗?为什么“平均值”的结果值非零?

我正在查看 accumulator 库的文档,但找不到这个问题的答案。

4

2 回答 2

2

对于一组空值,任何值都是有效的平均值。这x * 0 = 0适用于任何x.

您可以向您添加一个count功能accumulator_set并查询它以查看其是否为 0。

于 2011-10-12T20:21:31.343 回答
0

您不需要添加计数功能,因为平均累加器基于计数总和累加器

来自boost 用户指南

均值取决于总和和计数累加器...平均累加器的结果仅仅是总和累加器的结果除以计数累加器的结果。

所以你只需要验证计数大于 0:

bool isEmpty = boost::accumulators::count(Accumulator) == 0;
于 2020-04-07T12:08:20.253 回答