2022-01-21 01:00:18 +05:30
|
|
|
---
|
|
|
|
id: 5a23c84252665b21eecc7e03
|
2022-01-22 20:38:20 +05:30
|
|
|
title: 累積標準偏差
|
2022-01-21 01:00:18 +05:30
|
|
|
challengeType: 5
|
|
|
|
forumTopicId: 302240
|
|
|
|
dashedName: cumulative-standard-deviation
|
|
|
|
---
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
2022-02-28 13:29:21 +05:30
|
|
|
数値の配列をパラメータとして取り、級数の [標準偏差](https://en.wikipedia.org/wiki/Standard_deviation) を返す関数を作成します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
# --hints--
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation` という関数です。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert(typeof standardDeviation == 'function');
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` は数字を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number');
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` は `2` を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2);
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([600, 470, 170, 430, 300])` は `147.323` を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323);
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([75, 83, 96, 100, 121, 125])` は `18.239` を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239);
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82])` は `16.87` を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.equal(
|
|
|
|
standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]),
|
|
|
|
16.87
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
`standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314])` は `22.631` を返します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
```js
|
|
|
|
assert.equal(
|
|
|
|
standardDeviation([
|
|
|
|
271,
|
|
|
|
354,
|
|
|
|
296,
|
|
|
|
301,
|
|
|
|
333,
|
|
|
|
326,
|
|
|
|
285,
|
|
|
|
298,
|
|
|
|
327,
|
|
|
|
316,
|
|
|
|
287,
|
|
|
|
314
|
|
|
|
]),
|
|
|
|
22.631
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function standardDeviation(arr) {
|
|
|
|
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
```js
|
|
|
|
function standardDeviation(arr) {
|
|
|
|
var sum = 0,
|
|
|
|
sum_sq = 0,
|
|
|
|
n = arr.length;
|
|
|
|
arr.forEach(function(e) {
|
|
|
|
sum += e;
|
|
|
|
sum_sq += e * e;
|
|
|
|
});
|
|
|
|
|
|
|
|
var std_dev = Math.sqrt(sum_sq / n - Math.pow(sum / n, 2));
|
|
|
|
return Math.round(std_dev * 1000) / 1000;
|
|
|
|
}
|
|
|
|
```
|