moo*_*key 11 c c++ algorithm math
在C/C++,rand()和srand()通常使用的我们,当我们希望得到一个随机整数.但是当我试图自己重写它时,我发现很难理解算法.这个函数很容易写成几行,但公式是误解.
主要配方:
ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L;
Run Code Online (Sandbox Code Playgroud)
原始代码涉及:
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 );
}
Run Code Online (Sandbox Code Playgroud)