MSVCRT.DLL是否用于其rand()函数的线性同余发生器?
题
我试图预测使用的msvcrt的rand()函数,用于生成的三个骰子的面的程序的输出。我相信代码是这样的:
dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;
,我想知道如果我可以使用一个预测程序用于线性同余发生器到序列中预测下一号码。
解决方案
请参阅自己:C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c
(或者如果你从VC命令提示符下运行使用%VCINSTALLDIR%\crt\src\rand.c
。)
(假设你的至少标准版的VC的。这是两行。我会发布它,但不能确定许可证是否允许它。)
其他提示
如果没有记错,是的,它是一个线性同余发生器 - 但它返回的是一个更大的输出,从而提高预测的下一个数字(到如此地步,你可能需要超过三个更大的样本的难度剩余输出这样做可靠)。
不隶属于 StackOverflow