【发布时间】:2019-09-10 01:30:54
【问题描述】:
下面的代码可能不是最好看的,但它可以完成工作。至少我是这么想的。当我尝试使用大于 250,0000 的多个采样点时遇到问题。我真的不知道该怎么做。
我唯一尝试过的是将变量的类型从 int 切换为 long。
double MonteCarlo(){
const long N = 250000;
double GenR[NumPoints],apprx;
static double result[1];
double sum = 0;
default_random_engine generator;
uniform_real_distribution<double> distribution(0.0,1.0);
for(int i=0; i<=NumPoints; i++){
randGen[i] = distribution(generator);
sum += 4*exp(16*pow(GenR[i],2)-12*GenR[i]+2);
}
apprx = sum/NumPoints;
return apprx;
}
【问题讨论】:
-
您可以使用的堆栈内存数量有限。
double GenR[NumPoints]可能正在消耗您拥有的所有内存。要解决这个问题,请尝试使用堆内存分配它 -
"我遇到一个问题" 这是……? “程序不工作”不工作...怎么办?
-
@AlgirdasPreidžius 它运行代码,但不显示任何输出并声明返回值为 3221225725
-
@Amadeus 对不起,我该怎么做呢?我是 C++ 的初学者,我实际上并不知道堆内存是什么意思
-
@DMH16 那么,为什么这些信息不是问题?它准确地说明了问题所在:3221225725 = 0xC00000FD =“堆栈溢出”。最可能的罪魁祸首是您的阵列。只需使用
std::vector。如果您是初学者,请考虑从 good C++ book 以结构化方式学习 C++。
标签: c++ montecarlo