我有这个示例代码,它会抛出一个错误:
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);
错误是:
错误1错误C2039:&#39;生成&#39; :不是会员 &#39;的std :: random_device&#39; c:\ program files(x86)\ microsoft visual studio 12.0 \ vc \ include \ random 1618 1生活
我可以解释一下,为什么会这样?这似乎是头文件中的错误,而不是我的代码。
我该如何解决?
谢谢。
答案 0 :(得分:2)
std :: mt19937有两个构造函数,一个采用单个32位无符号值作为参数(默认值5489u),另一个采用种子序列(模板类型)作为参数。后者需要有一个名为generate的方法。 由于random_device没有这样的方法,因此您的代码无效。 你可能想做的是
std::mt19937 rng(rd());
即从设备中提取值并将其用作参数。