我正在研究一个rand()
在构造函数中使用 a 的 C++ 类。我真的很想让这门课在几乎所有方面都能照顾好自己,但我不知道在哪里播种rand()
。
如果我rand()
在构造函数中播种,则每次构造我的对象类型的新实例时都会播种。因此,如果我要按顺序创建 3 个对象,它们都将在同一秒内创建,因此具有相同的种子rand()
,为对象的 3 个实例中的每一个实例生成完全相同的数据。
我想rand()
在类代码中播种,而不是在创建对象之前在程序的主函数中进行。我想过做一个static bool seeded;
变量来表示是否rand()
已经播种,但我不确定如何在创建类时将其初始化为 false。
我的想法是这样的
myConstructor(){
if(!seeded){
srand(time(NULL));
seeded = true;
}
myVariable = rand()%maxVal;
}
我认为如果我能在程序开始时弄清楚如何将静态值初始化为 false 一次,这将起作用。我的理解是,如果这个静态值是静态的,那么将这个静态值更改为 true 将跨越对象的所有实例,因此只会在第一次创建该对象类型时执行种子函数。