我正在尝试预测一个程序的输出,该程序使用msvcrt的rand()函数来生成三个骰子的面。我相信代码是这样的:dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;,我想知道我是否可以使用线性同余生成器的预测程序来预测序列中的下一个数字。
发布于 2009-12-19 09:51:27
亲眼看看:C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c
(如果从VC命令提示符运行,则使用%VCINSTALLDIR%\crt\src\rand.c。)
(假设您至少有VC的标准版本。只有两行。我会把它贴出来,但不确定许可证是否允许。)
发布于 2009-12-19 10:08:18
如果内存有效,是的,它是一个线性同余生成器--但它返回的是更大输出的剩余部分,这增加了预测下一个数字的难度(到了这样的程度,您可能需要比三个输出更大的样本才能可靠地做到这一点)。
https://stackoverflow.com/questions/1931656
复制相似问题