正文

OpenFOAM——primitive——Random类2006-11-20 13:22:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bioexplore/20513.html

分享到:

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

阅读(5744) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册