c ++ rand()struct中的不同行为

时间:2017-07-20 15:31:38

标签: c++ random struct

我注意到rand()在结构中使用它时的奇怪行为。
下面的代码使用相同的表达式来获得0和1之间的双精度。
std::cout << ( (double) rand() / RAND_MAX ) <<std::endl;语句中生成的值似乎是随机的,并且分布在指定的范围内。分配给结构xy变量的值似乎不会以相同的方式分发。
例如运行程序4次会为[0.96516, 0.965629, 0.965731, 0.965817]生成one.x

对此有解释吗?

注意:我对其他库或解决方法不感兴趣。我想了解为什么rand()的行为如此不同。

谢谢

#include <iostream>
#include <ctime>

struct particle {
    double x = ( (double) rand() / RAND_MAX );
    double y = ( (double) rand() / RAND_MAX );
};

int main(int argc, const char * argv[]) {
    srand( (int) time(NULL) );
    particle one;
    std::cout << one.x <<std::endl;
    std::cout << ( (double) rand() / RAND_MAX ) <<std::endl;
};

0 个答案:

没有答案