前段时间因为有需求要模拟随机数据问题,用到Sleep()函数,
随机函数当时我用的是srand() 和 rand()函数, 部分代码如下:
for(int i = 0; i < tmpNum; i++)
{
srand(GetTickCount());
std::vector randId;
for(int j = 0; j < pUser.size();)
{
int tmpId = rand()%(pUser.size());
//判断是否已经有相同的ID生成了
std::vector::iterator iter = find(randId.begin(), randId.end(), tmpId);
if(iter != randId.end())
{
continue;
}
else
{
randId.push_back(tmpId);
j++;
}
}
randId.clear();
Sleep(1);
}
srand(GetTickCount())已经把随机种子换到1毫秒换一次了,结果发现做好的应用程序在自己电脑上运行很快,但是在别人的机器上很快,而且别人那边数据也不对,结果上网查,说Sleep()函数不准确,不能保证一定是睡那么多,所以随机种子的可能不对了,后面只好只好用轮询的办法来解决,修改之后,代码如下: