之前用到的随机数是以时间为种子的,当连续产生的时候,就会出现问题,更改了下。在设置种子的时候加上一个随机数。试了试,感觉还OK。
static unsigned int s_seed ;
void Utils::random_seed(int seed)
{
if(!seed) s_seed=time(NULL);
else s_seed=seed;
}
int Utils::random_int(int min,int max)
{
s_seed=214013*s_seed+2531011;
return min+(s_seed ^ s_seed>>15)%(max-min+1);
}
float Utils::random_float(float min,float max)
{
s_seed=214013*s_seed+2531011;
return min+(s_seed>>16)*(1.0f/65535.0f)*(max-min);
}
使用:
Utils::random_seed(Utils::currentTimeMillis() + rand()) ;