c++11 - 在方法中调用随机数生成器
问题描述
我在链接中使用了 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# - 如何对中间显示消息框的 Windows 窗体方法进行单元测试
- android - Firebase 侦听器跳过
- java - 按字段的日期对 Array 对象进行排序
- php - 显示具有不同颜色的记录
- python-3.x - n_jobs = -1 等效于 keras
- histogram - 如何从 TTree 中绘制 COLZ TH2F?
- python-3.x - python-pptx中的文本方向调整
- angular - 查看类的属性
- javascript - how to pass the multi-select values from JSP to controller without making use of any Model
- scala - 如何在 MLReader 上创建通用函数