蒙特卡洛错误

时间:2015-11-02 20:55:01

标签: c++ probability montecarlo

我写了一个monte carlo程序来计算ln(2)。我在1-2范围内生成随机x,在0-1范围内生成随机y。如果y <1 / x我将1添加到我的计数中。我对ln(2)的估计是count / n(即从上面得到的压裂)。我试图在我的估计中找到错误,这样一旦我的估计精确到2dp,我就可以结束程序。我不确定如何以有意义的方式计算标准偏差。帮助

1 个答案:

答案 0 :(得分:1)

我相信您想要的答案与binomial random variance相关。

对于二项式变量,您将获得与曲线下的时间U相关的许多计数,以及它在曲线上方的次数A。设N = U + A为样本总数。

U的标准偏差的合理估计值为sigma = sqrt(U/N * A/N * N)。这是因为U是一个二项式随机变量,p的最佳估计值,U/N的最佳估计值,它在单次试验中处于曲线下的概率,由1-p很好地估算。另请注意,A/N很好地估算了U/N

但您估算的内容是ln(2),因此对sigma / N估算值的标准偏差的合理估计值为sigma / N

这将为您提供合理的停止标准(当Promise.all([p1, p2]) .then(Function.apply.bind(//correct function(x, y) { alert(x + ", " + y); // expecting popup with "55, 44" }, null)) ); ); 足够小以满足您的需求时。)