fis*_*ood 2 c++ c++11 visual-studio-2012
我std::variate_generator在VS2010项目中使用了如下方式:
#include <random>
...
using std::variate_generator;
using std::mt19937;
using std::uniform_real_distribution;
typedef mt19937 Engine;
typedef uniform_real_distribution<float> Distribution;
typedef variate_generator< Engine, Distribution > Generator;
Generator r( Engine((DWORD)time(NULL)), Distribution(0.0f, 1.0f) );
// from now, calling float rnd = r() gave me a random number between 0.0f and 1.0f in rnd.
Run Code Online (Sandbox Code Playgroud)
我现在已将此代码放入 VS2012 解决方案中,我收到的错误消息是,它std::variate_generator不是std.
已std::variate_generator移动或已删除?
variate_generators 没有在<random>. std::variate_generatorvariate_generator 是 tr1 的一部分,但从未将其纳入标准,所以我对在 VS2010 中工作(而不是在 VS2010 中工作std::tr1::variate_genrator)感到有点惊讶。我相信它仍然存在于 VS2012 的 tr1 命名空间中。
您可以执行以下操作:
#include <random>
#include <functional> // for std::bind
...
using std::mt19937;
using std::uniform_real_distribution;
typedef mt19937 Engine;
typedef uniform_real_distribution<float> Distribution;
auto r = std::bind(Distribution(0.0f, 1.0f), Engine((DWORD)time(NULL)));
// from now, calling float rnd = r() gave me a random number between 0.0f and 1.0f in rnd.
Run Code Online (Sandbox Code Playgroud)