我有这个示例代码,它抛出一个错误:
std::random_device rd; // only used once to initialise engine
std::mt19937 rng(rd); // random-number engine used
std::uniform_int_distribution<int> uni(0, 7); // guaranteed unbiased
int random_integer = uni(rng);
错误是:
Error 1 error C2039: 'generate' : is not a member of 'std::random_device' c:\program files (x86)\microsoft visual studio 12.0\vc\include\random 1618 1 Life
有人可以解释一下为什么会发生这种情况吗?这似乎是头文件中的错误,而不是我的代码中的错误。
如何修复它?
谢谢。
最佳答案
std::mt19937 有两个构造函数,一个采用单个 32 位无符号值作为参数(默认值 5489u),另一个采用种子序列(模板类型)作为参数。后者需要有一个名为generate 的方法。 由于 random_device 没有这样的方法,因此您的代码无效。 您可能想做的是
std::mt19937 rng(rd());
即从设备中提取一个值并将其用作参数。
关于visual-studio - Visual Studio 2012 完全支持 <random>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706050/