C语言rand函数产生的最大随机数是多少?

 我来答
刺任芹O
2022-11-16 · TA获得超过6.2万个赞
知道顶级答主
回答量:38.7万
采纳率:99%
帮助的人:8337万
展开全部
   最大32767 (2^16-1)。\x0d\x0a  系统里的随机数是利用初等数论中的同余定理来实现的.\x0d\x0a  整数rand的原理是: \x0d\x0a y=ax+b(mod n)其中,n一般是一个很大的素数,几万。 \x0d\x0a a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x, \x0d\x0a 他被称为seed。 \x0d\x0a 每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话, \x0d\x0a 虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。 \x0d\x0a 为避免这种情况,一般取seed为y和当时计算机的时间的函数,如seed=y+t\x0d\x0a\x0d\x0a比如VC中对于rand()函数是如下实现的. \x0d\x0a int __cdecl rand (void) \x0d\x0a { \x0d\x0a return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff); \x0d\x0a }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式