#include #include #include #include #include #include #include #include using namespace std; //P1.bubble sort void swap(double &a, double &b){ double temp=b; b=a; a=temp; } int bubble(vector& v){ int countswap=0; for(unsigned int i=0;iv[j+1]){ swap(v[j],v[j+1]); countswap++; } } } return countswap; } //P2. Boxmuller double boxmuller(){ const double pi=4*atan(1.0); double u1=rand()/static_cast(RAND_MAX); double u2=rand()/static_cast(RAND_MAX); while(u2<1e-15){ u2=rand()/static_cast(RAND_MAX); } double x=sqrt(-2*log(u2))*cos(2*pi*u1); double y=sqrt(-2*log(u2))*sin(2*pi*u1); return x; } //P2. Monte Carlo class RV{ public: virtual double generate()=0; virtual double pdf(const double&)=0; virtual double cdf(const double&)=0; virtual ~RV(){} }; class uniform: public RV{ double a,b; public: uniform(double aa=0,double bb=1):a(aa),b(bb){} double generate(){ return a+(b-a)*(rand()/static_cast(RAND_MAX)); } double pdf(const double& x){ if(xb) return 0; else return (double)1/(b-a); } double cdf(const double& x){ if(x=b) return 1; else{ return (x-a)/(b-a); } } }; class normal: public RV{ double mu,sigma; public: normal(double mmu=0,double vol=1):mu(mmu),sigma(vol){} double generate(){ return mu+sigma*boxmuller(); } double pdf(const double& x){ const double pi=4*atan(1.0); return 1/(sqrt(2*pi)*sigma)*exp(-(x-mu)*(x-mu)/(2*sigma*sigma)); } double cdf(const double& x){ return 0; } }; double mtuni(double a,double b,int N,vector& stats){ double res=0; uniform rv(a,b); vector monte; for(int i=0;i& stats){ double res=0; normal rv(mu,sigma); vector monte; for(int i=0;i0); res+=temp/N; monte.push_back(temp); } double var=0; for(int i=0;i list; ifstream fin("data.txt"); double num; if(!fin.is_open()){ cout<<"No such file"<>num){ list.push_back(num); } fin.close(); cout<(cout," ")); //output the result into a file called sorted.txt ofstream fout("sorted.txt"); double outnum; if(!fout.is_open()){cout<<"No such file"< statsuni; cout<<"U[0,Pi]:"< statsnorm; cout<<"N(0,1):"<