This code uses the equation for standard deviation to be E(X^2) - E(X)^2. I need
ID: 3557031 • Letter: T
Question
This code uses the equation for standard deviation to be E(X^2) - E(X)^2. I need it to use this equation for standard deviation:
Please modify it to use this equation.
#include <iostream>
#include<math.h>
#include <cstdlib>
using namespace std;
void simulateTravelTime(int);
int main()
{
simulateTravelTime(10000);
}
void simulateTravelTime(int number_simulations){
int timeTotal = 0;
int time; //store time in 1 sim
int E =0; //to hold E(X^2) to solve variance E(X^2) - E(X)^2
for(int i =1; i<=number_simulations;i++){
time =0; //reset time
while(true){
if(rand() %2 == 0)
time += 3; //turns right wonders around for 3 min
else //its gone left
{
if(rand() %3 ==0)
{
time += 2;
timeTotal += time;
E += time*time; //Add X^2
break; //leaves in 2min
}
else{
time += 5;//end up back at start
}
}
} //while end
}
cout<<"average = "<<((double) timeTotal/(double)
number_simulations)<<" Standard deviation = "<<sqrt(((double)E / (double)number_simulations) -((double) timeTotal/(double) number_simulations)*((double) timeTotal/(double) number_simulations))<< ' ';
return;
}
Explanation / Answer
#include <iostream>
#include <string>
#include <math.h>
class StdDeviation
{
private:
int n;
double x[100];
double mean;
public:
double CalculateMean()
{
double sum = 0;
for(int i = 0; i < n; i++)
sum += x[i];
return (sum / n);
}
double CalculateSampleVariane()
{
mean = CalculateMean();
double temp = 0;
for(int i = 0; i < n; i++)
{
temp += (x[i] - mean) * (x[i] - mean) ;
}
return temp / (n - 1);
}
int SetValues(double *p, int count)
{
if(count > 100)
return -1;
n = count;
for(int i = 0; i < count; i++)
x[i] = p[i];
return 0;
}
double GetSampleStandardDeviation()
{
return sqrt(CalculateSampleVariane());
}
};
int main()
{
double arrNumbers[100];
int num;
std::cout<<"how many values do u want to enter,must be less than 100"<<' ';
std::cin>>num;
for(int i=0;i<num;i++)
std::cin>>arrNumbers[i];
StdDeviation sd;
sd.SetValues(arrNumbers,num);
double mean = sd.CalculateMean();
double samplevariance = sd.CalculateSampleVariane();
double sampledevi = sd.GetSampleStandardDeviation();
std::cout<<"mean:" <<mean<<' ';
std::cout<<"samplevariance:" <<samplevariance<<' ';
std::cout<<"sample diviation:"<<sampledevi<<' ';
return 0;
}