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

2024-12-31 09:29:19
推荐回答(5个)
回答1:

   最大32767 (2^16-1)。
  系统里的随机数是利用初等数论中的同余定理来实现的.
  整数rand的原理是:
y=ax+b(mod n)其中,n一般是一个很大的素数,几万。
a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x,
他被称为seed。
每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话,
虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。
为避免这种情况,一般取seed为y和当时计算机的时间的函数,如seed=y+t

比如VC中对于rand()函数是如下实现的.
int __cdecl rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}

回答2:

rand函数可以生成0~RAND_MAX间的整随机数,其中RAND_MAX是stdlib.h宏定义的常量,在程序中添上这个头文件直接引用就行了。想知道确切值直接写个程序在屏幕上输出RAND_MAX就可以看到了。

回答3:

经过对十亿随机数比较-_-||....最大32767 (2^16-1)
也就是RAND_MAX
short int 带符号2字节短整形 - 32768 ~ 32767

回答4:

没最大吧?
0-1之间

回答5:

请参考 stdlib.h 中定义的 RAND_MAX

0x7fff