C++ TRandom类 怎么用?(程序如下)

classTRandom{public://缺省使用系统时间(开机后经过的毫秒数)为种子TRandom(longseed=0){mSeed=(seed?seed:GetT... class TRandom
{ public:
//缺省使用系统时间(开机后经过的毫秒数)为种子
TRandom (long seed=0) {mSeed=(seed?seed: GetTickCount() )

//也可以定义自己的种子
void Seed(long seed=0) {mSeed=(seed?seed: GetTickCount()}

int Integer() {return Next();} //取得一个随机的整数

//取得一个在指定范围内的随机整数
int Integer(int min,int max) {return min+Next()%(max-min+1);}

//取得一个随机的(0到1之间的)小数
double Real() {return double(Next())/double(INT_MAX);}
private:
//使用调和算法
void Change() {mSeed=(314159265*mSeed+13579)%ULONG_MAX;}

//取得伪随机数发生器的随机数序列中的下一个随机整数
int Next() { int loops=mSeed%3; for (int i=0;i<=loops;i++) Change ();
return int (mSeed/2); }
unsigned long mSeed; //随机数发生器的种子
};

应用:随机排列0--19 20个整数
include <limits.h> //声明INT_MAX和ULONG_MAX常量
#include <windows.h> //声明GetTickCount()函数,其返回从开机到现在经过的毫秒数
在头文件里声明得 GetTickCount()函数
展开
 我来答
lieyan2024
2008-10-21 · TA获得超过485个赞
知道小有建树答主
回答量:361
采纳率:100%
帮助的人:470万
展开全部
这个类的作用就是用于生成随机数,其步骤是先设定一个种子,要么是你自己设定的一个数,要么是取系统时间。
然后就可以通过Integer函数来取随机整数了,也可以通过Real来取随机浮点数。
#include <windows.h>
#include <stdio.h>
#include <limits.h>

class TRandom
{ public:
//缺省使用系统时间(开机后经过的毫秒数)为种子
TRandom (long seed=0) {mSeed=seed?seed:GetTickCount();}

//也可以定义自己的种子
void Seed(long seed=0) {mSeed=seed?seed:GetTickCount();}

int Integer() {return Next();} //取得一个随机的整数

//取得一个在指定范围内的随机整数
int Integer(int min,int max) {return min+Next()%(max-min+1);}

//取得一个随机的(0到1之间的)小数
double Real() {return double(Next())/double(INT_MAX);}
private:
//使用调和算法
void Change() {mSeed=(314159265*mSeed+13579)%ULONG_MAX;}

//取得伪随机数发生器的随机数序列中的下一个随机整数
int Next() { int loops=mSeed%3; for (int i=0;i<=loops;i++) Change ();
return int (mSeed/2); }
unsigned long mSeed; //随机数发生器的种子
};

void main()
{
TRandom tr;

int n1 = tr.Integer();
int n2 = tr.Integer(5, 100);
double d1 = tr.Real();
printf("%d %d %lf\n", n1, n2, d1);
}
疾似云流
2008-10-20 · TA获得超过1159个赞
知道小有建树答主
回答量:1093
采纳率:0%
帮助的人:477万
展开全部
GetTickCount函数在哪里啊?

如果楼主要获得一个随机数的话,可以用<time.h>里的rand()函数,不过也是要设置时间种子——srand(time(0));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式