我需要使用蒙特卡罗方法计算积分的算法,为了模拟目的,我需要计算程序生成的样本的标准差。我的问题是,当我增加样本元素的数量时,标准差并没有像我预期的那样衰减。起初我以为是函数有误,但使用numpy预定义的函数来计算标准差后,发现值是相同的,并且并没有像我预期的那样下降。所以我怀疑问题出在我的样本上,于是我进行了以下模拟来测试标准差是否会按照预期逐渐减小:
list = [random.uniform(0,1) for i in range(100)]
print np.std(list)
得到的标准差为:0.289
list = [random.uniform(0,1) for i in range(1000)]
print np.std(list)
得到的标准差为:0.287
随着样本量的增加,标准差不应该会减少吗?因为我需要将其作为模拟中的停止准则,并且我期望随着样本量的增加,它会减小。我的数学概念出了什么问题吗?
提前感谢!
1/sqrt(12)
。更多信息请参见我的答案。 - askewchan