【发布时间】:2020-11-14 15:20:47
【问题描述】:
我编写了一个程序来使用蒙特卡洛方法计算函数(比如 sin(x))的定积分。但是,我认为我使用 mt19937 的方式不对,或者代码中存在另一个问题,因为它没有返回预期的结果。
这是我的代码:
mt19937 RandomEngine(0);
uniform_real_distribution<double> RandomDouble(0.0,1.0);
double x = RandomDouble(RandomEngine);
int NumberOfSimulations;
cin >> NumberOfSimulations;
double SumOfValues=0;
for (int iSimulation = 0; iSimulation < (NumberOfSimulations -1 ); iSimulation++)
{
SumOfValues += sin(x);
}
SumOfValues /= NumberOfSimulations;
cout << "The integral's result is: " << SumOfValues << endl;
你能告诉我为什么输出甚至不准确吗?
【问题讨论】:
-
当询问现有代码有什么问题时,提供minimal reproducible example,包括完整的程序(显示
#include语句、main的定义以及编译和运行所需的所有其他内容) , 演示问题的示例输入、观察到的输出和预期输出。
标签: c++ montecarlo