我在链接中使用了Cornstalk提供的代码: How to generate a random number in C++?
如果在我的类中的函数中实现,则效果很好,但是我需要在该类中的另一个函数中获取随机数,因此必须在类级别定义变量RNDRange(请参见下文)。然后,需要在函数A中按如下所示对其进行初始化,以便可以在函数B中调用该变量。
std :: uniform_int_distribution RNDRange(0,MinimumNumberOfAnimals-1);
参考以下代码:
制造
std :: mt19937 RandomNumberGenerator;
一个类级别的变量,并在函数A中添加了注释。
试图在类级别定义RNDRange,因此我可以在函数A中对其进行初始化,然后在函数B中调用RNDRange(RandomNumberGenerator)。由于我无法在类级别定义RNDRange(不知道如何),然后在函数A中对其进行初始化,无法在函数B中调用RNDRange(RandomNumberGenerator)。
std::mt19937 RandomNumberGenerator; // Mersenne Twister pseudo-random generator of 32-bit numbers with a state size of 19937 bits
RandomNumberGenerator.seed(std::random_device()());
std::uniform_int_distribution<std::mt19937::result_type> RNDRange(0, MinimumNumberOfAnimals - 1); // Seeds a random number generator for the range between zero and MinimumNumberOfAnimals
double MyRnd;
for (int i = 0; i < 10; i++) // tests
{
MyRnd = RNDRange(RandomNumberGenerator);
MyRnd = MyRnd / MinimumNumberOfAnimals;
// Use MyRnd
}
在函数A中工作正常,但是我不明白如何在类级别定义RNDRange,然后在函数A中用(0,MinimumNumberOfAnimals-1)进行初始化。MinimumNumberOfAnimals仅在类的构造函数中定义。