首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msvcrt.dll是否为其rand()函数使用线性同余生成器?

msvcrt.dll是否为其rand()函数使用线性同余生成器?
EN

Stack Overflow用户
提问于 2009-12-19 09:40:26
回答 2查看 1.1K关注 0票数 0

我正在尝试预测一个程序的输出,该程序使用msvcrt的rand()函数来生成三个骰子的面。我相信代码是这样的:dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;,我想知道我是否可以使用线性同余生成器的预测程序来预测序列中的下一个数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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的标准版本。只有两行。我会把它贴出来,但不确定许可证是否允许。)

票数 4
EN

Stack Overflow用户

发布于 2009-12-19 10:08:18

如果内存有效,是的,它是一个线性同余生成器--但它返回的是更大输出的剩余部分,这增加了预测下一个数字的难度(到了这样的程度,您可能需要比三个输出更大的样本才能可靠地做到这一点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1931656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档