CCF LMCC · CCF LMCC 青少年组第一轮认证 例题 第 12 题

选择题 · 答案 B

← 整套速查表 CCF LMCC 全部真题

题目

在评估一个代码生成智能体时,我们常使用 $Pass@K$ 指标。假设我们有一个包含 $n=100$ 个编程问题的测试集。对于每个问题,让智能体独立生成 $k=5$ 个不同的代码解决方案。如果对于某个问题,生成的 5 个方案中有任意一个能够通过单元测试,该问题就被视为“已解决”。最终,在 100 个问题中,有 60 个问题被成功解决。

根据上述描述,以下关于 $Pass@K$ 的计算和解释,哪一项是正确的?

答案:B

解题思维

这题其实考的是对 Pass@K 指标定义的理解,K 指的是生成代码的数量,而不是题目数量。拿到题先看清 K 和 n 分别代表什么,再看 Pass@K 到底衡量的是‘单个方案的通过率’还是‘整体问题的解决率’。

常见错误

最容易错在把 K 当成题目数,或者误以为 Pass@K 是总方案通过率。还有人会混淆‘任意一个通过就算解决’和‘所有方案都通过才算解决’的区别,导致计算逻辑完全跑偏。

详细解析(节选)

这道题考查的是代码生成评估指标 Pass@K 的概念理解与正确解读。Pass@K 的核心定义是:对于每个题目,生成 K 个独立方案,若其中至少有一个通过测试,则该题目被视为‘已解决’。它衡量的是智能体在生成 K 个方案时,能够成功解决题目的概率或比例。

命题人挖坑的意图很明确:利用考生对 K 的直观误解。很多初学者看到 K=5 就下意识地认为这是 5 道题,或者以为要计算所有方案的总通过率。实际上,K 只是控制生成的方案数量,与题目总数 n 无关。本题中 n=100 是题目数量,k=5 是每个题目的生成数,而 Pass@5 的计算公式是:(成功解决的题目数 / 题目总数)× 100% = 60/100 × 100% = 60%。这个 60% 表示的是:在生成 5 个方案的前提下,智能体成功解决了 60% 的题目。

思考心法上,拿到这类题要先明确两个关键点:第一,K 是什么?它是生成方案数;第二,Pass@K 衡量的是什么?是‘解决题目的比例’,而不是‘单个方案通过的概率’。如果题目问的是‘随机抽取一个方案通过的概率’,那就要用总通过数除以总方案数(60×5 / 500 = 60%),但这道题问的是 Pass@5 的含义,显然是指解决题目的比例。

避坑方面,选项 A 错误地将 Pass@5 解释为‘随机抽取一个生成方案通过的概率’,这是对指标定义的误读;选项 C 把 K 当成题目数,完全偏离概念;选项 D 则试图用总方案数做分母,混淆了‘解决题目’和‘方案通过’的区别。只有选项 B 准确抓住了 Pass@K 的本质:在生成 K 个方案的情况下,智能体解决了多少比例的题目。

从考频趋势看,虽然这道题未标注具体知识点,但类似概念辨析题在 CSP-J/S 和 GESP 中属于高频考点,尤其是涉及算法评估指标、概率计算等基础概念时,命题人常通过设置干扰项来检验学生是否真正理解定义而非死记公式。历年来看,这类题目往往出现在选择题的前半部分,作为对基本概念掌握程度的快速检测。

预测未来可能怎么考:随着算法评估指标在竞赛中的应用越来越广泛,命题人可能会继续设置类似的概念辨析题,但会加入更多实际场景描述,比如给出具体代码生成过程或测试数据,要求考生根据 Pass@K 的定义进行推导或判断。因此,加强对常见评估指标(如 Pass@K、Exact Match、BLEU 等)的理解,不仅是应对这类题目的关键,也是提升整体算法素养的重要一环。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断