由于qrand()得到的是固定的伪随机数,而time得到的如果在时间小于一秒则相差不大,要想每次运行程序生成的不一样,我的做法是把这两种相加,这样下次运行得到的多个随机数就和上次不一样了.

//random rect
	QRectF randRect;
	long randTimeNum = time(NULL);
	randRectNum += RandomRect+mLevel*2;
	for (int i=0;i<randRectNum;i++)
	{
		int randX = abs((qrand()+randTimeNum))%30;//0-29
		int randY = abs((qrand()+randTimeNum))%30;
		randRect = QRectF(randX,randY,mRectWidth,mRectHeight);
	}




另外补充一点abs(),由于在linux下会出现负数,不知道是不是整型溢出的原因,加上绝对值吧


2011.5.1


但是这样做显得很怪异。其实这样就可以了:


srand(time(0));


int i = rand()%100;