gcc在双随机数方面有问题吗?

gcc在双随机数方面有问题吗?,c,gcc,random,double,C,Gcc,Random,Double,我要生成双随机值。好的,我打了: random_value = ((double)rand() / (double)RAND_MAX); 使用printf进行少量检查: printf("rand: %f ", random_value); 太好了,价值来自。在printf之后,我写道: random_value *= range; // range have values from <0.05, 0.5> printf("random_value: %f, range:%f\n"

我要生成双随机值。好的,我打了:

random_value = ((double)rand() / (double)RAND_MAX);
使用printf进行少量检查:

printf("rand: %f ", random_value);
太好了,价值来自。在printf之后,我写道:

random_value *= range; // range have values from <0.05, 0.5>
printf("random_value: %f, range:%f\n", random_value, range);
一切恢复正常。为什么会发生这种情况

代码:

编译命令:

gcc -lm ant.c -o ant -O0
通用条款:

系统:

Linux 3.6.10-1-ARCH #1 SMP PREEMPT Tue Dec 11 09:40:17 CET 2012 x86_64 GNU/Linux
无随机_值的输出*=范围

rand: 0.534583 random_value: 0.534583, range:0.156963
rand: 0.909061 random_value: 0.909061, range:0.156963
rand: 0.144450 random_value: 0.144450, range:0.156963
rand: 0.235249 random_value: 0.235249, range:0.156963
rand: 0.978194 random_value: 0.978194, range:0.156963
rand: 0.965320 random_value: 0.570025, range:0.590504
rand: 0.991456 random_value: 0.155622, range:0.156963
rand: 0.957783 random_value: 0.392337, range:0.409631
rand: 0.970194 random_value: 0.122562, range:0.126327
rand: 0.980422 random_value: 0.132694, range:0.135344
随机_值*=范围的输出

rand: 0.534583 random_value: 0.534583, range:0.156963
rand: 0.909061 random_value: 0.909061, range:0.156963
rand: 0.144450 random_value: 0.144450, range:0.156963
rand: 0.235249 random_value: 0.235249, range:0.156963
rand: 0.978194 random_value: 0.978194, range:0.156963
rand: 0.965320 random_value: 0.570025, range:0.590504
rand: 0.991456 random_value: 0.155622, range:0.156963
rand: 0.957783 random_value: 0.392337, range:0.409631
rand: 0.970194 random_value: 0.122562, range:0.126327
rand: 0.980422 random_value: 0.132694, range:0.135344

这完全是随机的;-)您在生产线上运行了多少个输出?有五个结果在统计上不相关:您是否尝试运行它1000次?在代码中,“(…)”在哪里?我有范围的初始化。当然,我已经做了比5次多得多的运行,这些输出只是整个结果的一小部分。现在,您是否在每次计算之前调用
srand()
?也许试着在程序启动时调用它一次。我认为如果你发布一个小程序来演示你的问题,它会很有用。我认为这里没有足够的信息来了解发生了什么。发布你的全部代码。张贴一篇演示问题的文章。
rand: 0.965320 random_value: 0.570025, range:0.590504
rand: 0.991456 random_value: 0.155622, range:0.156963
rand: 0.957783 random_value: 0.392337, range:0.409631
rand: 0.970194 random_value: 0.122562, range:0.126327
rand: 0.980422 random_value: 0.132694, range:0.135344