2.3 KiB
2.3 KiB
import random
import math
import numpy as np
import matplotlib.pyplot as plt
# 初始本金
initial_principal = 10000
# 游戏次数
num_games = 146
# 获胜概率
win_prob = 0.75
# 年化赢利率
annual_win_rate = 0.5
# 年化输利率
annual_loss_rate = -0.8
# 模拟次数
simulation_times = 10000
final_amounts = []
for _ in range(simulation_times):
principal = initial_principal
# 模拟游戏过程
for _ in range(num_games):
# 模拟游戏结果
result = random.random()
if result < win_prob:
# 赢了
daily_rate = (5 / 365) * annual_win_rate
principal *= (1 + daily_rate)
else:
# 输了
daily_rate = (5 / 365) * annual_loss_rate
principal *= (1 + daily_rate)
final_amounts.append(principal)
# 绘制直方图
plt.hist(final_amounts, bins=50, edgecolor='black')
plt.title('Histogram of Final Amounts after 10000 Simulations')
plt.xlabel('Final Amount')
plt.ylabel('Frequency')
plt.show()
代码解释
- 模拟部分:
- 定义了初始本金、游戏次数、获胜概率、年化赢利率、年化输利率和模拟次数等参数。
- 通过两层循环模拟一万次两年的游戏过程,每次游戏根据随机结果更新本金,并将每次模拟的最终资金存储在
final_amounts
列表中。
- 绘制直方图部分:
- 使用
plt.hist()
函数绘制final_amounts
的直方图,bins=50
表示将数据分成 50 个区间,edgecolor='black'
为每个柱子添加黑色边框,使图形更清晰。 - 使用
plt.title()
、plt.xlabel()
和plt.ylabel()
分别设置图形的标题、x 轴标签和 y 轴标签。
- 使用
plt.show()
的作用:plt.show()
是matplotlib
库中的一个函数,它的作用是显示当前绘制的图形。当你运行这段代码时,它会弹出一个窗口,在这个窗口中会显示绘制好的直方图图片。这个窗口允许你进行一些基本的操作,比如放大、缩小、保存图片等。
运行上述代码后,你会看到一个直方图,该直方图展示了一万次模拟后最终资金的分布情况,x 轴表示最终资金的数值区间,y 轴表示落在每个区间内的模拟次数(频率)。