关于随机数....
小弟我写了个函数用于生成多个随机数,并放入传入的数组中,但是该函数如果连续调用的话,生成的两组数完全一致,请问有哪位高手能指点偶一下呢???代码如下:
void GetRamArray(long num,long *array,long MinVal,long MaxVal)
{
//num 数组元素个数,*array数组,随机数最大最小值MinVal,MaxVal
srand((unsigned)time(NULL)); //尝试过timeGetTime()精确到毫秒了,结果还是一样的...
long temp=MaxVal-MinVal; //计算随机数区间
std::set<long> s;
std::set<long>::iterator it;
while(1)
{
long r = rand() % temp;
s.insert(r+MinVal); //利用set来保存已经产生的随机数,同时防止重复
if(s.size() == num)
{
break;
}
}
int i=0;
for (it=s.begin();it!=s.end();++it,i=rand()%num)
{
if (array[i]==0) //取出的数是已经从笑到大排好序的,所以要打乱顺序
{
array[i]=(*it);
}
else
{
it--;
}
}
}
int main(int argc, char* argv[])
{
printf("Hello World!\n");
long a[10]={0};
GetRamArray(10,a,9,89);
for (int i=0;i<10;i++)
{
printf("The %d is %d \n",i,a[i]);
}
long b[10]={0};
GetRamArray(10,b,9,89);
for ( i=0;i<10;i++)
{
printf("The %d is %d \n",i,b[i]);
}
return 0;
}