Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;使用<;随机>;头成员? 在C语言中我学会了编程,并开始学习C++。我正在使用VisualStudio2010 IDE。我试图用中提供的分发类生成随机数。例如,我尝试执行以下操作: #include <random> std::normal_distribution<double> *normal = new normal_distribution<double>(0.0, 0.0); std::knuth_b *engine = new knuth_b(); std::variate_generator<knuth_b, normal_distribution<double>> *rnd; rnd = new variate_generator<knuth_b, normal_distribution<double>>(engine, normal); #包括 标准::正态分布*正态=新正态分布(0.0,0.0); std::knuth_b*引擎=新knuth_b(); std::变量_发生器*rnd; rnd=新变量发电机(发动机,正常);_C++_Visual C++_C++11_Visual C++ 2010 - Fatal编程技术网

如何在C++;使用<;随机>;头成员? 在C语言中我学会了编程,并开始学习C++。我正在使用VisualStudio2010 IDE。我试图用中提供的分发类生成随机数。例如,我尝试执行以下操作: #include <random> std::normal_distribution<double> *normal = new normal_distribution<double>(0.0, 0.0); std::knuth_b *engine = new knuth_b(); std::variate_generator<knuth_b, normal_distribution<double>> *rnd; rnd = new variate_generator<knuth_b, normal_distribution<double>>(engine, normal); #包括 标准::正态分布*正态=新正态分布(0.0,0.0); std::knuth_b*引擎=新knuth_b(); std::变量_发生器*rnd; rnd=新变量发电机(发动机,正常);

如何在C++;使用<;随机>;头成员? 在C语言中我学会了编程,并开始学习C++。我正在使用VisualStudio2010 IDE。我试图用中提供的分发类生成随机数。例如,我尝试执行以下操作: #include <random> std::normal_distribution<double> *normal = new normal_distribution<double>(0.0, 0.0); std::knuth_b *engine = new knuth_b(); std::variate_generator<knuth_b, normal_distribution<double>> *rnd; rnd = new variate_generator<knuth_b, normal_distribution<double>>(engine, normal); #包括 标准::正态分布*正态=新正态分布(0.0,0.0); std::knuth_b*引擎=新knuth_b(); std::变量_发生器*rnd; rnd=新变量发电机(发动机,正常);,c++,visual-c++,c++11,visual-c++-2010,C++,Visual C++,C++11,Visual C++ 2010,最后一行给出了一个编译器错误: IntelliSense:构造函数“std::tr1::variate_generator::variate_generator[with _Engine=std::tr1::knuth_b,_Distrib=std::tr1::normal_distribution]”的实例与参数列表不匹配 我的论点看起来不错,我做错了什么?当这里的variate_生成器类被实例化时,您会调用哪个方法来获取下一个随机数,即.NET的System.random.next()?在C

最后一行给出了一个编译器错误: IntelliSense:构造函数“std::tr1::variate_generator::variate_generator[with _Engine=std::tr1::knuth_b,_Distrib=std::tr1::normal_distribution]”的实例与参数列表不匹配


我的论点看起来不错,我做错了什么?当这里的variate_生成器类被实例化时,您会调用哪个方法来获取下一个随机数,即.NET的System.random.next()?

在C++0x中没有variate_生成器,但是std::bind也可以工作。以下文件在GCC 4.5.2和MSVC 2010 Express中编译和运行:

#include <random>
#include <functional>
#include <iostream>
int main()
{
    std::normal_distribution<> normal(10.0, 3.0); // mean 10, sigma 3
    std::random_device rd;
    std::mt19937 engine(rd()); // knuth_b fails in MSVC2010, but compiles in GCC
    std::function<double()> rnd = std::bind(normal, engine);

    std::cout << rnd() << '\n';
    std::cout << rnd() << '\n';
    std::cout << rnd() << '\n';
    std::cout << rnd() << '\n';
}
#包括
#包括
#包括
int main()
{
正态分布正态(10.0,3.0);//平均值10,西格玛3
std::随机_装置rd;
std::mt19937引擎(rd());//knuth_b在MSVC2010中失败,但在GCC中编译
std::function rnd=std::bind(正常,引擎);

std::cout警报:请注意,上述解决方案绑定了引擎的副本,而不是引擎的引用。因此,如果您也这样做: std::function rnd2=std::bind(正常,引擎);
然后rnd对象和rnd2对象将产生完全相同的随机数序列。

很酷,谢谢它能工作,现在我了解了库。与其说是答案,不如说是评论,但非常准确!