102 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | id: 5a23c84252665b21eecc7e03 | ||
|  | title: Cumulative standard deviation | ||
|  | challengeType: 5 | ||
|  | forumTopicId: 302240 | ||
|  | dashedName: cumulative-standard-deviation | ||
|  | --- | ||
|  | 
 | ||
|  | # --description--
 | ||
|  | 
 | ||
|  | Write a function that takes an array of numbers as parameter and returns the [standard deviation](https://en.wikipedia.org/wiki/Standard Deviation) of the series. | ||
|  | 
 | ||
|  | # --hints--
 | ||
|  | 
 | ||
|  | `standardDeviation` should be a function. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert(typeof standardDeviation == 'function'); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return a number. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number'); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return `2`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([600, 470, 170, 430, 300])` should return `147.323`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([75, 83, 96, 100, 121, 125])` should return `18.239`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82])` should return `16.87`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal( | ||
|  |   standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]), | ||
|  |   16.87 | ||
|  | ); | ||
|  | ``` | ||
|  | 
 | ||
|  | `standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314])` should return `22.631`. | ||
|  | 
 | ||
|  | ```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; | ||
|  | } | ||
|  | ``` |