我想了解一下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/

10-12 15:04