今天介绍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; }}今天就到这吧

评论