2015-02-24 63 views
1

我有这样的示例代码和它抛出一个错误:是<random>完全在Visual Studio支持2012

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

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

我该如何解决?

谢谢。

回答

2

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

std::mt19937 rng(rd()); 

即提取该设备的价值和使用,作为一个参数。

相关问题