Cumulative standard deviation: Difference between revisions

Content added Content deleted
m (→‎{{header|OCaml}}: whitespace)
No edit summary
Line 105: Line 105:


return 0;
return 0;
}</lang>

=={{header|C++}}==
<lang C++>#include <algorithm>
#include <iostream>
#include <iterator>
#include <cmath>
#include <vector>
#include <iterator>
#include <numeric>

double standard_dev( std::vector<double> & ) ;

int main( ) {
double demoset[] = { 2 , 4 , 4 , 4 , 5, 5 , 7 , 9 } ;
int demosize = sizeof demoset / sizeof *demoset ;
std::vector<double> numbers ;
for ( double *d = demoset ; d != demoset + demosize ; ++d )
numbers.push_back( *d ) ;
std::cout << "The standard deviation of\n" ;
std::copy( numbers.begin( ) , numbers.end( ) , std::ostream_iterator<double>( std::cout, " " ) ) ;
std::cout << "\nis " << standard_dev( numbers ) << " !\n" ;
return 0 ;
}

double standard_dev( std::vector<double> & numbers ) {
double mean = std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) / numbers.size( ) ;
std::vector<double> squares ;
for( std::vector<double>::const_iterator vdi = numbers.begin( ) ; vdi != numbers.end( ) ; vdi++ )
squares.push_back( pow( *vdi - mean , 2 ) ) ;
return pow( std::accumulate( squares.begin( ) , squares.end( ) , 0 ) / squares.size( ) , 0.5 ) ;
}</lang>
}</lang>