当 RAND_MAX 的值为 0.000000
。 RAND_MAX
不应该为 rand()
函数生成的数字设置最大值吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a,b,c;
for (int i=0;i<100;i++){
a=(double)rand()/(double)RAND_MAX;
b=(double)rand()/(double)RAND_MAX;
c=a-b;
printf("itteration : %d values a=%f,b=%f,c=%f, RAND_MAX=%f \n",i,a,b,c,RAND_MAX);
}
return 0;
}
最佳答案
RAND_MAX
是一个整数常量,但您使用 %f
说明符(用于 double
)打印它,这是未定义的行为(在你的情况下恰好打印 0)。使用 %d
,您将看到 RAND_MAX
的实际值。
顺便说一句,如果您将警告设置得足够高,几乎任何体面的编译器都会警告您有关无效 printf
的信息。一定要这样做,C和C++的陷阱够多的,至少让编译器在它能帮你的时候帮你。
关于c stdlib.h 中 RAND_MAX 和 rand() 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051111/