[英]Finding the error in my Python function to plot a histogram and return a list?
*指令如下:
plotRandomUniformSum(M, N, nBins)
让我们考虑一下当我们将M
个均匀随机数相加时会发生什么。 由于每个随机数可以在0
和1
之间,我们预计这个sum
将在0
和M
之间,但不知何故,我们希望sum
更可能接近middle (M/2)
而不是接近ends (0 and M)
对于M > 1
。 首先编写一个 function randomUniformSum(M)
,它将M
个介于0
和1
之间的均匀随机数相加。 二、写一个function那forms一个列表,通过调用randomUniformSum
一共N
N times
。 三、plot 将结果以直方图形式返回并返回列表。 请记住,return 意味着退出 function。 因此,您应该先 plot 的直方图然后返回列表。
binMin
和binMax
应该使用什么值?
要回答这个问题,请考虑randomUniformSum
可能假设的minimum
和maximum
。 尝试在每种情况下调用您的 function 四次,其中M = 1, 2, 3, 10
1、2、3、10 设置N = 1000000
和nBins = 100
。 您会注意到,随着M
的增加,分布看起来越来越像正态(或高斯)分布。 这是中心极限定理的说明,这是统计学中一个非常重要的定理,它指出当您添加越来越多的独立随机变量(来自任何分布,不必是均匀的)时,总和接近正态分布 - 非常酷:-).*
这是我到目前为止所拥有的:
def randomUniformSum(M):
sum = 0
for i in range(M):
sum += random.uniform(0,1)
return sum
def plotRandomUniformSum(M, N, nBins):
L = []
for i in range(N+1):
x = randomUniformSum(M)
L.append(x)
hist.plotHistogram(L, nBins = nBins)
我的这个作业的自动评分器返回一个错误:
“测试失败:无。= [0,793340083761663. 0,8219540423197268, 0[202687 字符]9087]”
所有测试都有不同的数字。
我的错误在哪里? 我似乎找不到哪里出错了。
您没有从plotRandomUniformSum(M, N, nBins)
function 返回列表
def randomUniformSum(M):
sum = 0
for i in range(M):
sum += random.uniform(0,1)
return sum
def plotRandomUniformSum(M, N, nBins):
L = []
for i in range(N+1):
x = randomUniformSum(M)
L.append(x)
hist.plotHistogram(L, nBins = nBins)
return L # you missed this out
list_of_random_sums = plotRandomUniformSum(10, 1000000, 100)
二、写一个function 即forms 一个N个这样的数字的列表,通过调用randomUniformSum一共N次。
您好,欢迎来到 SO。 对我来说,您似乎不清楚您是否已经形成了一个由N+1
元素而不是N
组成的列表。 尝试更改for i in range(N+1):
与for i in range(N):
一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.