vc 10.0 源码
void __cdecl srand (
unsigned int seed
)
{
_getptd()->_holdrand = (unsigned long)seed;
}
int __cdecl rand (
void
)
{
_ptiddata ptd = _getptd();
return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );
}
多线程采集随机数,每一个线程都要srand()一次而不是主线程srand() 一次,这是由于随机数生成器的内部状态信息保存在线程私有数据上;不在线程里用srand初始化种子,线程就有相同的初始值,生成相同的随机数序列。
本文深入解析了VC10.0中srand和rand函数的实现原理,阐述了多线程环境下随机数生成器的工作机制,强调了在每个线程中初始化种子的重要性,避免生成相同的随机数序列。
2818

被折叠的 条评论
为什么被折叠?



