Python:将蒙特卡洛模拟的while循环结果保存为NumPy数组
解决蒙特卡洛模拟结果存储问题
你需要先初始化一个容器(列表或numpy数组)来存储每次的模拟结果,之前尝试append无输出是因为没创建存储容器就直接操作了。下面是修改后的完整代码:
import random import numpy as np # 导入绘图库用于后续可视化 import matplotlib.pyplot as plt def steadystate(): p=0.88 Cout=4700000000 LambdaAER=0.72 Vol=44.5 Depo=0.42 Uptime=0.1 Effic=0.38 Recirc=4.3 x = random.randint(86900000,2230000000000) conc = ((p*Cout*LambdaAER)+(x/Vol))/(LambdaAER+Depo+(Uptime*Effic*Recirc)) return conc # 初始化空列表存储模拟结果 results = [] x = 0 while x < 10000: result = steadystate() # 将每次结果追加到列表中 results.append(result) x += 1 # 可选:将列表转为numpy数组,方便后续数值计算和绘图 results_np = np.array(results) # 示例:绘制结果的直方图(蒙特卡洛模拟常用分布可视化方式) plt.hist(results_np, bins=50, edgecolor='black') plt.title('Steady State Concentration Distribution') plt.xlabel('Concentration') plt.ylabel('Frequency') plt.show()
关键改动说明:
- 新增
results = []创建空列表,作为结果的存储容器 - 在循环内添加
results.append(result),把每次计算的浓度值存入列表 - 可选步骤:将列表转为numpy数组
results_np,numpy对批量数值处理和绘图的支持更便捷 - 加入了直方图绘图示例,直接运行就能看到10000次模拟结果的分布情况
内容的提问来源于stack exchange,提问作者bowlcutinmatrix
相关产品推荐
相关产品推荐

