⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 randomnumber.cpp

📁 关于产生均匀分布和标准正态分布的随机变量的VC程序
💻 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 + -