2

次のコードを使用して標準偏差を計算します。

std::vector<float> k = {4,6,2};
float mean = 4;

float sum = std::accumulate(k.begin(), k.end(), 0, [&mean](float x, float y) {
    return (y - mean) * (y - mean);
});

float variance = sum / k.size();
float stdev = sqrt(variance);

std::accumulate返す4べきときに返されます:

(4-4)^2 + (6-4)^2 + (2-4)^2 = 8

さらに、印刷すると次のようになり(y - mean) * (y - mean)ます。

0
4
4

では、なぜ返されないの0 + 4 + 4でしょうか。

4

1 に答える 1

7

x パラメータは使用しません。次のことを試してください。

float sum = std::accumulate(k.begin(), k.end(), 0.0F, [&mean](float x, float y) {
    return x + (y - mean) * (y - mean);
});

更新: float としての初期値

于 2016-07-21T18:45:26.440 に答える