--- id: 5a23c84252665b21eecc7e03 title: Cumulative standard deviation challengeType: 5 forumTopicId: 302240 --- ## Description
Write a function that takes an array of numbers as parameter and returns the standard deviation of the series.
## Instructions
## Tests
```yml tests: - text: standardDeviation should be a function. testString: assert(typeof standardDeviation == 'function'); - text: standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) should return a number. testString: assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number'); - text: standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) should return 2. testString: assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2); - text: standardDeviation([600, 470, 170, 430, 300]) should return 147.323. testString: assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323); - text: standardDeviation([75, 83, 96, 100, 121, 125]) should return 18.239. testString: assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239); - text: standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]) should return 16.87. testString: assert.equal(standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]), 16.87); - text: standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314]) should return 22.631. testString: assert.equal(standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314]), 22.631); ```
## Challenge Seed
```js function standardDeviation(arr) { } ```
## Solution
```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; } ```