首页 > 解决方案 > 在方法中调用随机数生成器

问题描述

我在链接中使用了 Cornstalk 提供的代码: 如何在 C++ 中生成随机数?

如果在我的类的函数中实现它可以正常工作,但我需要在该类的另一个函数中获取随机数,因此必须在类级别定义变量 RNDRange(见下文)。然后我需要在函数 A 中按如下方式对其进行初始化,这样我就可以在函数 B 中调用该变量。

std::uniform_int_distribution RDRange(0, MinimumNumberOfAnimals - 1);

参考下面的代码:

制成

std::mt19937 随机数生成器;

一个类级别的变量,并在函数 A 中进行了相同的注释。工作正常。

试图在类级别定义RNDRange,然后我可以在函数A中对其进行初始化,并在函数B中调用RNDRange(RandomNumberGenerator)。由于我无法在类级别定义RNDRange(不知道如何),然后将其初始化函数 A,在函数 B 中调用 RDRange(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 中工作正常,但我不明白如何在类级别定义 RDRange,然后在函数 A 中使用 (0, MinimumNumberOfAnimals - 1) 进行初始化。MinimumNumberOfAnimals 仅在类的构造函数中定义。

标签: c++11random

解决方案


推荐阅读