【发布时间】:2020-07-07 16:16:42
【问题描述】:
首先,对不起,如果这是一个愚蠢的问题,但我最近学习了如何处理课程。 我的问题是我创建了一个构造函数,它给每个数据成员一个随机数,语法如下:
#include <random>
...
//Constructor
cSystem::cSystem(void)
{
//Range of random numbers
double lower_bound = -100;
double upper_bound = 100;
std::uniform_real_distribution<double> unif(lower_bound,upper_bound);
std::default_random_engine re;
/*Initialization of data members*/
sMass=1.0014;
sPositionX= unif(re);
sPositionY= unif(re);
}
但是,我想在我的主函数中创建一个由这些“系统”组成的数组
int main (void)
{
cSystem systems[numsist]; //numsist is a constant defined to be 1000
//Function that writes its characteristics in a file using a method that returns positions
getPositions(systems);
return 0;
}
但在文件中,我得到了
-73.6924 -8.26997
-73.6924 -8.26997
-73.6924 -8.26997
我以为我正在遍历数组的每个元素的构造函数,给它一个不同的随机值,但似乎在开始时给出了一个值,然后在整个向量中重复。 我该怎么做才能获得一个以随机方式初始化每个元素的构造函数?
注意:我每次运行程序时也得到相同的值,我想种子没有改变,为什么会这样?
【问题讨论】:
-
但是您在构造函数中创建了一个新的 RNG。这将产生相同系列的随机数。为什么不使用全局 RNG 单例?
-
或者只是让
re和unifstatic班级成员?
标签: c++ arrays class random constructor