--- 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', 'standardDeviation should be a 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', 'standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) should return a 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, 'standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) should return 2.'); - text: standardDeviation([600, 470, 170, 430, 300]) should return 147.323. testString: assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323, 'standardDeviation([600, 470, 170, 430, 300]) should return 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, 'standardDeviation([75, 83, 96, 100, 121, 125]) should return 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, 'standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]) should return 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, 'standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314]) should return 22.631.'); ```
## Challenge Seed
```js function standardDeviation(arr) { // Good luck! } ```
## 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; } ```