📄 randomnumber.cpp
字号:
//RandomNumber.cpp 产生随机数类的实现
#include "RandomNumber.h"
#include <math.h>
#include <iostream>
#include <time.h>
using namespace std;
double CPlmg::PI=3.1415926;
double CPlmg::M1=pow(5,13);
double CPlmg::M2=pow(2.0,35)-31;
double CPlmg::M11=pow(7,5);
double CPlmg::M22=pow(2.0,32)-31;
double CNorm_Variable::PI=3.1415926;
double CStandered_Norm::PI=3.1415926;
double CStandered_Uniformity::PI=3.1415926;
CPlmg::CPlmg()
{
seed1=1;
seed2=3;
}
double CPlmg::Plmg1()
{
seed1=fmod(M1*seed1,M2);
U_variable=seed1/M2;
return U_variable;
}
double CPlmg::Plmg2()
{
seed2=fmod(M11*seed2,M22);
U_variable2=seed2/M22;
return U_variable2;
}
////////////////////////////////////
CStandered_Uniformity::CStandered_Uniformity(int Dimension)
{
Array_Dimension=Dimension;
Array=new double[Array_Dimension];
}
CStandered_Uniformity::~CStandered_Uniformity()
{
delete []Array;
}
double * CStandered_Uniformity::Sample()
{
int i;
int n;//变量个数的二分之一
n=(Array_Dimension+1)/2;
for(i=1;i<n;i++)
{
u1=My_Plmg.Plmg1();
u2=My_Plmg.Plmg2();
Array[2*i-2]=u1;
Array[2*i-1]=u2;
}
u1=My_Plmg.Plmg1();
u2=My_Plmg.Plmg2();
Array[2*n-2]=u1;
if(Array_Dimension%2!=1)
Array[2*n-1]=u2;
return Array;
}
//////////////////////////////////////////////////
CStandered_Norm::CStandered_Norm(int Dimension)
{
Array_Dimension=Dimension;
Array=new double[Array_Dimension];
}
CStandered_Norm::~CStandered_Norm()
{
delete []Array;
}
double * CStandered_Norm::Sample()
{
int i;
int n;//变量个数的二分之一
n=(Array_Dimension+1)/2;
for(i=1;i<n;i++)
{
u1=My_Plmg.Plmg1();
u2=My_Plmg.Plmg2();
Array[2*i-2]=sqrt(-2*log(u2))*sin(2*PI*u1);
Array[2*i-1]=sqrt(-2*log(u2))*cos(2*PI*u1);
}
u1=My_Plmg.Plmg1();
u2=My_Plmg.Plmg2();
Array[2*n-2]=sqrt(-2*log(u2))*sin(2*PI*u1);
if(Array_Dimension%2!=1)
Array[2*n-1]=sqrt(-2*log(u2))*cos(2*PI*u1);
return Array;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -