Visual Studio 2012中是否完全支持<random> </random>

时间:2015-02-24 20:54:55

标签: visual-studio visual-studio-2012 random

我有这个示例代码,它会抛出一个错误:

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生活

我可以解释一下,为什么会这样?这似乎是头文件中的错误,而不是我的代码。

我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:2)

std :: mt19937有两个构造函数,一个采用单个32位无符号值作为参数(默认值5489u),另一个采用种子序列(模板类型)作为参数。后者需要有一个名为generate的方法。 由于random_device没有这样的方法,因此您的代码无效。 你可能想做的是

std::mt19937 rng(rd());

即从设备中提取值并将其用作参数。