You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在特定迭代次数后重启循环?10年实验模拟遇结果累积问题

问题分析与解决办法

你的核心问题是全局列表没在每次模拟前重置,加上内部逻辑错误修改了所有历史数据,才导致跨轮结果累积。具体问题点:

  • results1、expenses1、margins1是全局变量,每次模拟(sim循环)都往里面追加数据,没清空,所以第2次模拟的年份会接着第1次的10年之后继续计算。
  • 你在每个年份(yr循环)里遍历整个全局列表,修改的是所有历史数据,包括之前模拟的年份,完全打乱了每轮独立的逻辑。
  • iter变量在每次yr循环都被设为0,根本起不到控制迭代次数的作用。

修正后的代码逻辑

把每轮模拟的列表放到sim循环内部,保证每轮10年的数据独立;同时按年份顺序处理每轮内的逻辑,不用全局遍历:

import numpy as np
import pandas as pd

# 存储所有模拟的结果
all_simulations = []

for sim in range(5):
    # 每轮模拟初始化独立列表,避免跨轮累积
    results = []
    expenses = []
    margins = []
    
    for yr in range(10):
        # 初始化当年基础值
        experiment = "Success" if np.random.random() <= 0.1 else "Failure"
        expense = 25000
        margin = 0
        
        # 根据上一年的结果修改当前年的值
        if yr > 0:
            prev_result = results[yr-1]
            prev_expense = expenses[yr-1]
            prev_margin = margins[yr-1]
            
            # 上一年成功,当前年费用为0,初始利润10000
            if prev_result == 'Success':
                expense = 0
                margin = 10000
            # 上一年费用为0,当前年费用继续为0
            elif prev_expense == 0:
                expense = 0
            # 上一年利润>=10000,当前年复利计算
            if prev_margin >= 10000:
                margin = prev_margin * 1.2
        
        # 将当前年数据加入本轮列表
        results.append(experiment)
        expenses.append(expense)
        margins.append(margin)
    
    # 把本轮10年的数据整理成DataFrame,加入总列表
    sim_df = pd.DataFrame({
        "Simulation": sim+1,
        "Year": range(1, 11),
        "Results": results,
        "R&D": expenses,
        "Margins": margins
    })
    all_simulations.append(sim_df)

# 合并所有模拟结果
final_df = pd.concat(all_simulations, ignore_index=True)
print(final_df)

关键改动说明

  • 每轮模拟(sim循环)内部新建results、expenses、margins,每轮结束后这些列表只包含当前轮的10年数据,不会和其他轮混淆。
  • 处理年份逻辑时,只参考当前轮的上一年数据,不用遍历所有历史,逻辑更清晰,也不会修改其他轮的数据。
  • 给每轮数据加上Simulation和Year标识,方便后续分析每轮的独立结果。
  • 去掉了无用的iter变量,用yr循环直接控制10年的迭代。

这样修改后,每轮10年模拟都会独立运行,结束后自动重启下一轮,不会出现跨轮累积的问题,复利计算也只会在当前轮的年份内延续。

内容的提问来源于stack exchange,提问作者CantCodeAtAll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:20:27