今天介绍Random类——实现随机数的生成,包括标量,矢量以及张量!
私有成员变量:整型的seed
公有部分:
构造函数:
Random(const label& a);//给定一个常整数a进行构造
成员函数:
int bit(): //根据得到的随机数,返回1或者是0
scalar scalar01();//得到一个0-1之间的随机标量值
vector vector01();//得到三个元素都在0-1之间的随机矢量
tensor tensor01();//得到所有元素都在0-1之间的随机张量
sphericalTensor sphericalTensor01();//得到所有元素都在0-1之间的sphericalTensor
label integer(const label& lower, const label& upper);//返回lower和upper之间的随机数
vector position(const vector& v1, cosnt vector& v2);//返回位于矢量v1和v2之间的随
机矢量
void randomise(scalar& s); //将一个随机标量存入s中
void randomise(vector& v1);//将一个随机矢量存入v1中
void randomise(tensor& t);//将一个随机张量存入t中
scalar GaussNormal(); //没看太明白,下面是他的代码:
scalar Random::GaussNormal()
{
static int iset = 0;
static scalar gset;
scalar fac, rsq, v1, v2;
if (iset == 0)
{
do
{
v1 = 2.0*scalar01() - 1.0;
v2 = 2.0*scalar01() - 1.0;
rsq = v1*v1 + v2*v2;
} while (rsq >= 1.0 || rsq == 0.0);
fac = sqrt(-2.0 * log(rsq)/rsq);
gset = v1*fac;
iset = 1;
return v2*fac;
}
else
{
iset = 0;
return gset;
}
}
今天就到这吧
评论