参考GPT和自己的思路:
您好,要重复运行代码以得出结果,您可以将代码放入一个循环结构中,例如使用 for 循环可以重复运行。具体来说,您可以将程序封装成一个函数,然后在一个 for 循环中多次调用该函数,每次传入不同的参数进行计算,最后保存结果或进行统计分析。举个例子,您可以这样修改代码:
import random, math
from matplotlib import pyplot as plt
def gamble_once():
return True if random.random() > 0.5 else False
def every_day_money(hold_money, year_number):
if hold_money < 1:
return 0
input_money = 1
hold_money = hold_money - input_money
hold_money_list = []
for day in range(1,math.ceil(365 * year_number)):
input_money = 1
while not gamble_once():
input_money = input_money * 2
hold_money = hold_money - input_money
if hold_money <= 0:
hold_money_list.append(hold_money)
return hold_money
hold_money = hold_money + 2 * input_money
hold_money_list.append(hold_money)
return hold_money_list
if __name__ == '__main__':
hold_money = 1000
year_number = 10
hold_money_list_all = []
for i in range(10):
hold_money_list = every_day_money(hold_money, year_number)
plt.plot(list(range(len(hold_money_list))), hold_money_list)
hold_money_list_all.append(hold_money_list)
plt.title("every day's money during {} years".format(year_number))
plt.xlabel('days')
plt.ylabel('money')
plt.show()
# 计算平均资产值和破产率
bankrupt_count = 0
total = 0
for hold_money_list in hold_money_list_all:
total += hold_money_list[-1]
if hold_money_list[-1] <= 0:
bankrupt_count += 1
print("平均资产值为:{:.2f}".format(total / len(hold_money_list_all)))
print("破产率为:{:.2%}".format(bankrupt_count / len(hold_money_list_all)))
在这个修改后的代码中,every_day_money
函数除了接收一个初始资产参数 hold_money
,还接收了一个年数参数 year_number
,并将每天资产值放入了一个列表 hold_money_list
中。主函数中使用 for 循环调用 every_day_money
函数 10 次,每次传入相同的初始资产值和年数,并将每次计算得到的 hold_money_list
用 plt.plot 画在同一张图中。最后,计算了所有实验的平均资产值和破产率,并打印出来。