我在代码中写了一个线程函数
static UINT MyThreadFun()
{......
printf("%d",rand());
Sleep(500);
......
}
OnBtnDown()函数产生10个线程,代码如下:
OnBtnDown()
{.....
srand( (unsigned)GetTickCount() );
for(i=0;i<10;i++)
{
m_pManageLostThread=
AfxBeginThread(CUdpThread::MyThreadFun, (LPVOID)(this),THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED,NULL) ) ; m_pManageLostThread->ResumeThread();
}
......
}
发现每次连续产生的随机数都是10个一组,
我希望每个线程产生的随机数都不同,?
请大侠指点,谢谢!
static UINT MyThreadFun()
{......
printf("%d",rand());
Sleep(500);
......
}
OnBtnDown()函数产生10个线程,代码如下:
OnBtnDown()
{.....
srand( (unsigned)GetTickCount() );
for(i=0;i<10;i++)
{
m_pManageLostThread=
AfxBeginThread(CUdpThread::MyThreadFun, (LPVOID)(this),THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED,NULL) ) ; m_pManageLostThread->ResumeThread();
}
......
}
发现每次连续产生的随机数都是10个一组,
我希望每个线程产生的随机数都不同,?
请大侠指点,谢谢!
srand( (unsigned)time( NULL ) );
就可以了
或者srand(Gettickcount);得到的是一毫秒区分
每个线程运行可能是毫秒级,随机数还是有很大可能相同,
有没什么办法得到更精确的时间。
我自己想了个办法,为什么非得得到更加精确的时间呢,换个角度考虑也行啊。就是用“time()*进程ID”做种子,虽然获取的时间是相同的,但是进程ID是唯一的,最后得到的种子也是唯一的。
srand((int)time(NULL)*(int)tid);
rand();
我试过这个方法了,可行