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

C++数组累积和计算(蒙特卡洛模拟场景)问题求助

代码问题排查与修复方案

  • 语法兼容性问题:你使用的变长数组int jData[iData]属于C语言扩展特性,C++标准不支持,运行时可能出现不可预知的错误,建议替换为std::vector容器。
  • 数组下标越界错误:第一个输入循环使用i从1到iData遍历数组,而C/C++数组下标从0开始,会导致jData[0]未赋值、jData[iData]越界访问,两者都是未定义行为。
  • 变量未初始化+重复定义:全局域和main函数内重复定义了tData变量,且main内的tData未初始化就执行累加操作,统计的总数据量完全错误。
  • 累积频率逻辑错误:当前两种累积和计算逻辑都不符合需求,正确的累积和应当是逐次累加前序所有概率,即第i个位置的累积频率=第i-1个位置的累积频率+第i个数据的概率。
  • 区间边界逻辑缺失:你定义了区间边界数组tepiA/tepiB但未使用,第i个数据的区间左边界为第i-1个位置的累积频率,右边界为第i个位置的累积频率,可直接用于后续蒙特卡洛随机数映射。

修复后完整代码

#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
    int iData;
    cout << "请输入数据条数: ";
    cin >> iData;
    // 替换变长数组为vector,兼容标准C++
    vector<int> jData(iData);
    int tData = 0; // 初始化总数据量

    // 输入数据,下标从0开始
    for(int i=0; i<iData; i++){
        cout << "请输入第" << i+1 << "条数据: ";
        cin >> jData[i];
        tData += jData[i];
    }
    system("cls");

    vector<double> probkei(iData);
    vector<double> tKumul(iData);
    vector<double> tepiA(iData); // 区间左边界
    vector<double> tepiB(iData); // 区间右边界
    double cum_sum = 0.0;

    cout << setw(10) << "数据序号" << setw(10) << "频率" << setw(15) << "概率" << setw(20) << "累积频率" << setw(20) << "对应区间" << endl;
    for(int i=0; i<iData; i++){
        // 计算当前概率
        probkei[i] = (double)jData[i]/tData;
        probkei[i] = round(probkei[i] * 1000.0) / 1000.0;
        // 计算累积频率
        cum_sum += probkei[i];
        tKumul[i] = round(cum_sum * 1000.0) / 1000.0;
        // 计算区间边界
        tepiA[i] = (i == 0) ? 0 : tKumul[i-1];
        tepiB[i] = tKumul[i];
        // 输出
        cout << setw(10) << i+1 << setw(10) << jData[i] << setw(15) << probkei[i] << setw(20) << tKumul[i] << setw(10) << "[" << tepiA[i] << ", " << tepiB[i] << ")" << endl;
    }
    cout << setw(20) << "总数据量: " << tData << endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:24:02