· engineering· 约 17 分钟精读
Qubitlab Single Qubit Measurement Engineering — Technical Analysis | KeyRotate Technology
以 QubitLab 两条真实代码路径为样本,拆开布洛赫球态的概率计算、单次测量后的基态更新,以及关卡中十次软件抽样与累计计数之间的差异,并明确教学模拟与真实量子硬件测量的边界。
一、一个按钮背后的两个问题
在实验室页面里,学习者先看到布洛赫球与两项概率,再按下测量按钮。常见的直觉是:按钮执行一次测量,屏幕返回一个零或一,状态随之改变。QubitLab 的源码确实有一条这样的单次路径;但关卡里的量子态挑战还实现了另一条路径:每次点按从当前概率抽取十个软件样本,累加计数,再把多数结果作为本轮提示。两个入口使用相似的量子词汇,却不是同一个数据流程。
这一区别值得在产品页面和工程文档里说清。概率读数是状态模型计算出的理论分布;一次测量是从分布中取一个结果;多次测量才形成频数。若把三者合并成一个“测量结果”,读者就无法判断屏幕上百分比表示的是模型概率、样本频率,还是某台真实设备的读数。
近期行业消息也提供了一个必要的对照。IBM 于十月二十三日介绍日本新能源产业技术综合开发机构量子挑战赛的获奖项目:九支获奖队伍都使用了 IBM 量子计算机,其中六支只使用 IBM 硬件。此类真实硬件运行与 QubitLab 的教学仿真属于不同类别。本文讨论的是手机本地计算的教育沙盒,不将它描述为硬件控制器、量子随机数设备或科研量子计算后端。
二、范围与源码证据
QubitLab 是面向 iOS 的量子物理与 STEM 启蒙交互沙盒。本文只审查其单比特状态展示和测量相关代码,不把课程闯关分数当作物理测量,也不推断设备具有源码未声明的熵源或实验接口。
审查的两处入口分别是 SuperpositionLabView.swift 与 QubitHackerGameView.swift,状态与概率定义位于 QuantumState.swift。前者拥有一个 QubitState 和一个视图本地的 measurementHistory;后者维护关卡阶段、十次样本计数与最近一批多数结果。它们展示了同一组量子概念在两个交互目的下的不同取舍:实验室关注“这一态测出什么”,关卡关注“这一批操作是否满足本关条件”。
源码定位本身也是结论的一部分。SuperpositionLabView 把单次返回值追加进数组,但这条数组在该视图中没有用于绘制频数表或结果列表的读取点;它是视图内存状态,不是持久台账。关卡侧的两个计数器则被界面和胜利条件读取,但计数代表批次抽样累计,不等价于保存了每个测量事件的明细。
三、由球面参数得到两项概率
状态由极角与方位角表示。源码把两个复振幅写成:
随后分别取振幅模平方并夹在零与一之间,作为计算基下的两项读数:
归一化成立时,两项相加为一。方位角会改变复振幅的相位,却不会改变这两个计算基测量概率。对于极角零,读数为一比零;极角为直角时两项相等;极角到达半周时顺序反转。页面的两条百分比和进度条就是状态参数的派生显示,不是过去若干次测量的频率估计。
这个区分决定了界面如何响应操作。按下 H 门后,实验室路径把角度更新到赤道叠加态,百分比条相应变为等值;但在真正取样之前,改变的是状态模型,不是一次观测记录。Z 门可以改变相位而保留计算基概率,因此只观察这两根条,不能判断所有量子态信息是否相同。球面和概率条互补:前者展示几何状态,后者只报告指定测量基下的两个结果概率。
四、从状态到读出的双轨架构
下图把共用的状态计算和两个入口的后续动作分开。左侧代表实验室的一次坍缩语义;右侧代表关卡的批次统计语义。分开画出结果写入位置,避免把状态更新、计数与通关条件误看成同一操作。
五、实验室路径:一次取样并改写状态
QubitState.measure() 先从零到一的随机区间取得一个值,再与 prob0 比较。小于该概率时返回零,否则返回一。返回值被追加到 SuperpositionLabView 的 measurementHistory,同时状态角被直接写成两个计算基极点之一:零态设为极角零,一态设为半周,方位角归零。下一次渲染时,布洛赫球和概率条从这个新状态重新计算,于是读数变为一比零或零比一。
因此该入口在软件模型中实现了“单次取样—结果追加—状态更新”的闭环。它不是物理仪器测出的结果,而是本地状态模型依概率抽样后得到的教学演示。屏幕上的变化可以帮助学习者理解投影测量的理想化概念;它不能证明真实光子、离子或超导量子比特发生过测量,也不包含设备校准、读出误差或噪声模型。
还要留意明细的可见性边界。数组确实接收了返回值,但当前视图没有消费它来显示每一项历史或频率统计,也没有写入持久存储。现阶段用户能直接观察的是坍缩后更新的状态与概率,不应把这个数组称为可审计的测量日志。若将来要展示多次实验结果,应明确另建计数或明细视图,并为重置、视图重建与记录保留分别定义行为。
六、关卡路径:十个样本与多数结果
QubitHackerGameView 的按钮路径不同。点按一次后,代码读取当前 prob1,循环十次,每次调用 Double.random(in: 0...1),小于 prob1 就给一态计数加一,否则给零态计数加一。本批的两项计数累加到视图状态,样本总数增加十;最近结果字段则由本批一态计数是否不少于零态计数决定。
这意味着 lastMeasureResult 的含义是“这一批的多数标签”,不是十次样本中的最后一个结果。代码也没有调用 QubitState.measure(),没有把活动态设置为测量后的极点;后续保真度仍由当前球面角与目标角计算。阶段切换时,批次计数清零,活动状态与门序列并不因这次抽样而自动坍缩。把这个分支称作“十次统计抽样”是准确的,把它写成十次硬件测量或十个可追溯事件则不准确。
这一处还有一个产品表达上的差异:测量动画使用多数标签显示“坍缩到某一态”,但底层活动状态并未随这个标签改成对应极点。若教学目标是说明单次投影测量,视觉提示与模型状态最好保持一致;若目标只是把多数结果当作关卡反馈,则提示文案应说明它是本批摘要,而不是当前态的物理更新。否则学习者可能从动画推断出模型实际没有执行的状态转移。
通关判定还会合并两类数据:一类是用球面坐标计算的纯态重叠保真度,另一类是本地样本计数。不同关卡把阈值组合成不同条件,例如保真度门槛、至少十个样本、某一结果比例或两项计数都非零。这里的百分比阈值属于关卡规则,不是量子测量设备的误差率,也不是对学习者理解程度的统计估计。
七、十次样本的统计波动
若每次抽样相互独立且概率保持不变,十次结果中的频率会围绕理论概率波动。对于真实概率为二分之一的结果,伯努利样本频率的标准误等于根号下“概率乘以其补数,再除以样本数”;代入十次,约为零点一五八,即十五点八个百分点。这只是有限样本的自然波动量级,不是软件缺陷,也不能用一次批次判断概率模型是否准确。样本数越少,偶然偏差越显眼;如果要向学习者展示频率逼近理论值,应该把样本数量、累计范围和状态何时改变同时标出来。
这一估算依赖样本独立、每次概率不变的前提。源码在一次点击开始时读取当前 prob1,循环十次生成随机数并按同一概率分类。这是本机的软件抽样;没有真实探测器、硬件熵认证、读出噪声或校准过程。即使十次计数接近五比五,也只能说明这一批软件样本的频数,不能包装成量子硬件样本或声称验证了物理概率。
源码中每次按钮调用增加十个样本,但这些十个值不是固定试验设计的均值曲线,也没有置信区间、重复种子或统计检验。关卡所需的是一个轻量的交互判定,而不是科研级蒙特卡洛分析。有些关卡根据计数比例通过,例如多数读数达到特定门槛;这会让同一个状态在不同抽样批次出现不同的过关结果。交互设计若保留这种随机性,建议提供重测机会,并在说明中区分“态已对准”和“本批样本满足条件”。工程测试也应避免依赖一次随机运行必然通过,而改为注入可控随机源或拆出纯函数判定,覆盖边界样本、概率为零与一、以及重复批次累计等情况。
八、离线属性与能力边界
以上概率计算、门操作、抽样、计数和判定都发生在本机视图模型里。该路径不需要联网服务返回振幅或读数,这有利于在无网环境中继续学习,并减少未成年人的操作数据传到外部的机会。但“离线”并不自动等于“实验测量”:这里没有连接到量子芯片、探测器、实验台或量子随机数设备的代码链路。公开说明应把它称为端侧教学仿真和软件抽样。
测量界面至少应分清四个字段:当前状态的理论概率、一次抽样结果、累计样本数、累计结果计数。状态改变时,旧频数是否清零也要有明确规则。若只有状态条,应标注它是模型概率;若出现计数,应标注样本来源和次数;若动画只呈现批次多数结果,就不要让“坍缩”一词暗示底层状态已经更新。这些标签能让界面内容与程序语义相互核对。
自动化测试可建立两层检查。状态模型测试验证角度端点、均匀叠加、概率归一与一次测量后的极点状态;交互层测试验证测量按钮调用一次测量、计数变化与重新渲染。对十次批次分支,应把抽样函数注入或封装,使测试能确定性地产生全零、全一、五比五和六比四的样本,再分别核对累计计数、多数标签、保真度是否保持原值以及阶段重置。仅断言随机结果属于零或一,不足以覆盖分支的统计语义。
九、结语
量子态概率、单次测量与批次频数彼此相关,但在程序中各自有不同的状态和时间尺度。QubitLab 的实验室入口真正把一次结果写回单比特状态;关卡入口则抽取十个随机样本,把多数结果用于本地判断而不修改活动态。把这两条路径分开展示,既忠于源码,也能让学习者明白“理论上有多大概率”与“这一次抽到什么”不是同一句话。
对端侧教育沙盒而言,工程质量不只在于给出一条漂亮的概率条,更在于让读数、随机样本、反馈动画和状态转移逐项对应。QubitLab 提供的是本机的交互教学模型;它可以用来观察理想化的概率与测量概念,但真实量子硬件读出、噪声、校准和实验重复性属于另一套系统,不能由手机界面替代。
参考资料
- [1] Apple. Swift Standard Library:
Double.random(in:). https://developer.apple.com/documentation/swift/double/random(in:)-6idef - [2] OpenStax. University Physics Volume 3, 7.1 Wave Functions(Born interpretation). https://openstax.org/books/university-physics-volume-3/pages/7-1-wave-functions
- [3] IBM Quantum Blog. IBM supports award-winning projects in NEDO Challenge, 2026-10-23. https://www.ibm.com/quantum/blog/ibm-nedo-challenge-2026
- [4] Apple. XCTest documentation. https://developer.apple.com/documentation/xctest
- [5] QubitLab 源码审查入口:
Sources/QuantumLab/Models/QuantumState.swift、Sources/QuantumLab/Views/Labs/SuperpositionLabView.swift、Sources/QuantumLab/Views/Odyssey/MiniGames/QubitHackerGameView.swift。