Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包含双精度的向量_C++ - Fatal编程技术网

C++ 包含双精度的向量

C++ 包含双精度的向量,c++,C++,我需要计算向量内值的平均值、中值和s.d。我可以对向量进行排序以找出中间值,但是有没有更简单的方法来找到平均值和标准偏差,而不是将数据相加?为了找到平均值,只需将向量内容相加即可。您可以在不首先对向量进行实际排序的情况下找到中值,但计算未排序向量上的中值的算法几乎肯定比排序后要复杂得多。另外,我很确定,如果你计算在一个未排序的向量上找到中值的时间,它几乎肯定会超过排序和提取中值的时间总和。如果你只是为了技术挑战,我会为你写一个 由于您可能需要对向量进行排序,因此可以在排序时计算平均值。您可以使用

我需要计算向量内值的平均值、中值和s.d。我可以对向量进行排序以找出中间值,但是有没有更简单的方法来找到平均值和标准偏差,而不是将数据相加?

为了找到平均值,只需将向量内容相加即可。您可以在不首先对向量进行实际排序的情况下找到中值,但计算未排序向量上的中值的算法几乎肯定比排序后要复杂得多。另外,我很确定,如果你计算在一个未排序的向量上找到中值的时间,它几乎肯定会超过排序和提取中值的时间总和。如果你只是为了技术挑战,我会为你写一个


由于您可能需要对向量进行排序,因此可以在排序时计算平均值。

您可以使用std::nth\u元素找到中值。与显然流行的观点相反,这通常比排序快,然后找到中间元素-它通常是线性的,而排序通常是对数N

要为平均值添加元素,可以使用std::accumulate,类似于:

 double total = std::accumulate(std::begin(v), std::end(v), 0.0);
[注意:根据编译器的使用年限,您可能需要使用v.begin和v.end而不是beginv和ndv`.]


计算方差已包含在一份报告中。标准差只是方差的平方根。

< P>编辑:没有看到C++标签! 如果您使用的是一种提供函数式编程工具的语言,则可以使用+函数折叠向量,然后除以其长度来表示平均值

对于stddev,您可以使用lambda:x->x-mean^2并用+折叠结果


它的计算效率并不高,但它可能会节省很多开发人员的时间

在说这句话之前,我想了两次:你尝试了什么?有一个累加算法。精确地添加内容有什么困难?在日志N上排序要比在日志N上添加内容花费更长的时间。但是,要找到中间值,您不需要进行完整排序,请看您在这里失去了我。。。如果计算在未排序的向量上找到中值的时间,几乎可以肯定的是,它将超过在C++中相关的高阶函数上排序和提取中值信息的组合时间: