我在Mac OS X 10.7.3上使用GCC 4.2。一切顺利,直到我更新它。我完全不知道为什么它不再起作用。
问题如下:
rand()
给了我一些非常接近彼此的值,但不相等。因此,在多次运行程序后,我得到的答案就像。
输出:
(double)rand()/(double)RAND_MAX.
0.945264,
0.945295,
0.945335
(当更多时间过去时,差异会变大。)
我使用srand(time(NULL));
播种它,直到一小时前我更新它才能正常运行。我现在测试了20次,所有的输出都是大约。同样,这当然不是随机的。
有任何想法吗?
的修改
#include <stdlib.h>
main()
{
srand(time(NULL));
printf("%f",(double)rand()/(double)RAND_MAX);
}
(这是我的所有代码,对不起,我对格式化感到厌烦。)
答案 0 :(得分:0)
这可能是另一种可能性:
我认为这是您srand
当我发布此
时#include <stdlib.h>
#include <time.h>
#include <stdio.h>
main()
{
int i;
for(i=0;i<4;i++){
srand(time(NULL));
printf("%f\n",(double)rand()/(double)RAND_MAX);
}
return(0);
}
我得到了这个结果
0.314774
0.314774
0.314774
0.314774
但是当我在循环之外移动srand
时,我得到了不同的随机数
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
main()
{
int i;
srand(time(NULL));
for(i=0;i<4;i++){
printf("%f\n",(double)rand()/(double)RAND_MAX);
}
return(0);
}
我得到了这些结果
0.154158
0.832643
0.529257
0.529633
答案 1 :(得分:-3)
如果你用time(NULL)
看到它,我相信它总会彼此接近,因为时间正在慢慢增加。随着时间的推移,你会看到你的随机数略有变化。
试试这个:
(double)srand(time(NULL))/(double)RAND_MAX.
-------- -------- EDIT
看起来我原来的假设是错误的。我跑了这个得到非常不同的随机数而没有重新播种。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, p;
srand(time(NULL));
for(p=0;p<10;p++){
i = rand();
printf ("Your random number is %d\n", i);
}
return(0);
}