PYTHON 3:嗨,所以我有这段代码
for money in range(0, 2501, 500):
print("{} Euro".format(money), end='')
throws = 0
d = trump.possession(board)
while False in d.values():
prevLoc = piece.location
piece.move(trump.throw())
throws += 1
if piece.location < prevLoc:
money += 200
if board.names[piece.location] in d and d[board.names[piece.location]] == False and money >= board.values[piece.location]:
money -= board.values[piece.location]
d[board.names[piece.location]] = True
return throws
这个代码需要0钱才能开始,运行代码,查找购买整块板所需的投掷金额,同样需要500个起始金,1000个等等
我的问题是,我怎样才能将每次起始价值的平均投注购买整个董事会?我的代码现在的方式是返回所有起始值的抛出量,但模拟一次,因此可能不准确。 我搜索了很多东西,尝试了一些东西,但我遇到了这个问题,因为我想要运行它,例如2000次,并得到每个起始值的平均值。
有人对此有任何提示吗?一段时间以来一直在努力..
我尝试从0到2000进行for循环,然后在另一个for循环中打印0-2500,然后在函数中使用下面的代码,将throws的返回值追加到列表中并将其求和在2000年之前,它并没有那么好......
答案 0 :(得分:0)
由于return语句,我将假设这是一个函数。您需要将输出收集到列表中,然后在结尾处对其进行平均。
def calc_throws(simulations):
throw_list = []
average = lambda x: sum(x)/len(x)
for i, money in enumerate(range(0, 2501, 500)):
print("{} Euro".format(money), end='')
throw_list.append([money, []])
for _ in range(simulations):
throws = 0
d = trump.possession(board)
while False in d.values():
prevLoc = piece.location
piece.move(trump.throw())
throws += 1
if piece.location < prevLoc:
money += 200
if board.names[piece.location] in d and d[board.names[piece.location]] == False and money >= board.values[piece.location]:
money -= board.values[piece.location]
d[board.names[piece.location]] = True
throw_list[i][1].append(throws)
throw_list[i][1] = average(throw_list[i][1])
return throw_list
这不是一个数字,而是返回一个列表,如#[[0,20],[500,15],...[2500,3]]
(或任何合理的数字),它为您提供每个起始金额的平均值。