我想了解一下rand()和srand()函数是如何实现的,并且想调整代码以根据我的需求修改它。在哪里可以找到rand()和srand()的源代码。
最佳答案
它接受一个种子作为输入参数,通常如下所示:
double result = srand(time(NULL));
并返回一个随机数,该随机数依附于概率,因此是预期的出现次数。
从CodeGuru forums:-
void __cdecl srand (unsigned int seed)
{
#ifdef _MT
_getptd()->_holdrand = (unsigned long)seed;
#else /* _MT */
holdrand = (long)seed;
#endif /* _MT */
}
int __cdecl rand (void)
{
#ifdef _MT
_ptiddata ptd = _getptd();
return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) &
0x7fff );
#else /* _MT */
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif /* _MT */
}
希望这有帮助。
关于c - 兰德实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4768180/