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