在Python2.7中工作。
我正试图绘制一个柱状图,显示我随机行走50次所产生的数字。但是当我使用pylab.hist(batting_average,bins=10)时,我得到了一个奇怪的多色直方图,它上升到接近500,但是只有50次步行,它在y轴上的最大值应该是50。
这是我的代码:
a = ['Hit', 'Out']
b = [.3, .7]
def battingAverage(atBats, some_list=a, probabilities=b):
num_hits = 0
num_outs = 0
current_BA = []
for i in range(1,atBats):
if random_pick(a, b) == 'Hit':
num_hits += 1
else:
num_outs +=1
BA = float(num_hits)/(float(num_hits)+float(num_outs))
current_BA.append(BA)
return current_BA
def printBAs():
for i in range(50):
batting_average = battingAverage(501)
pylab.hist(batting_average, bins=10)
我的直方图怎么了!?
如果有什么需要澄清的,请告诉我,我会尽力的。
传递给
battingAverage
的参数是501。。。是蝙蝠的数量。你要做50个直方图,每个直方图500个蝙蝠。(哦,你需要修正代码的格式。。。压痕弄乱了。)
你的代码并不像你想的那样。
我想你希望
battingAverage
返回最后的击球平均数,但它返回一个击球平均数列表,每个击球平均数一个。 那你就在计划那个名单。我认为您希望从battingAverage返回一个数字,并且希望在printBAs()函数中累积列表,并将pylab.hist移出for循环。
我想这不是家庭作业吧?
换句话说,我认为你想要这样的东西:
尽管代码仍然需要清理。。。
相关问题 更多 >
编程相关推荐