在方法中调用随机数生成器

时间:2019-01-12 19:07:32

标签: c++11 random

我在链接中使用了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仅在类的构造函数中定义。

0 个答案:

没有答案