33,311
社区成员
发帖
与我相关
我的任务
分享
double jyfb()//均匀分布
{
double a= double(rand())/ RAND_MAX;
return a;
}
double zxjxsf(double u,double t)//中心极限算法
{
double a=jyfb();
a=u+a*(t-u);
return a;
}
void main()
{
srand(time(NULL));
int u=2.0,t=3.5;
for(int i=0;i<100;i++)
/*cout<<zxjxsf(u,t);
cout<<endl;*/
cout<<BOX_MULLER(u,t)<<endl;
system("pause");
}
这样试试
#include<iostream>
#include<ctime>
#include<cmath>
#define RAND_MAX 0x7fff
using namespace std;
double jyfb()//均匀分布
{
double a = double(rand()) / RAND_MAX;
return a;
}
double zxjxsf(double u, double t)//中心极限算法
{
double a = jyfb();
a = u + a*(t - u);
return a;
}
double BOX_MULLER(double u, double t)//BOX_MULLER算法
{
double a = jyfb();
double b = jyfb();
double x = sqrt(-2 * log(a))*cos(2 * 3.141592*b);
return x;
}
void main()
{
srand(time(NULL));
int u = 2.0, t = 3.5;
for (int i = 0; i < 100; i++)
/*cout<<zxjxsf(u,t);
cout<<endl;*/
cout << BOX_MULLER(u, t) << endl;
system("pause");
}