2. 单量子比特测量结果的概率分布建模与采样验证
任务拆解:从态矢量到测量统计
本案例给定一个两能级量子态,目标是建立它在计算基下测量结果的概率分布模型,再用有限次采样生成统计结果,最后与理论概率对比,观察采样数增大时的收敛行为。为避免与态矢量表示、密度矩阵等任务重叠,这里把重点放在“概率分布 + 采样 + 收敛判读”这条链上。
设量子态为 |ψ⟩ = α|0⟩ + β|1⟩,其中 α、β 为复数且满足 |α|² + |β|² = 1。在计算基 {|0⟩, |1⟩} 上测量时,得到结果 0 的概率为 p₀ = |α|²,得到结果 1 的概率为 p₁ = |β|²。本案例取一个具体示例态:
α = 0.6 + 0.0j
β = 0.8 + 0.0j
p₀ = |α|² = 0.36
p₁ = |β|² = 0.64
这是一个实数振幅的示例,便于手算核对;若振幅含相位,概率只取模平方,相位不影响计算基测量分布,这一点在建模时要明确。
概率分布模型与采样实现
概率分布模型的核心是一个离散分布对象:支持集为 {0, 1},概率质量函数为 p(0)=0.36、p(1)=0.64。采样就是按该分布独立重复抽取 N 次,统计 0 和 1 的出现次数,再除以 N 得到经验频率。下面给出一个自洽、可直接运行的 Python 实现,不依赖外部量子库,只用标准库完成采样与对比。
import random
import math
# 1. 给定态矢量(示例:实数振幅)
alpha = 0.6 + 0.0j
beta = 0.8 + 0.0j
# 2. 归一化校验
norm_sq = abs(alpha)**2 + abs(beta)**2
assert abs(norm_sq - 1.0) < 1e-12, "态矢量未归一化"
# 3. 理论概率分布
p0 = abs(alpha)**2 # 0.36
p1 = abs(beta)**2 # 0.64
probs = [p0, p1]
# 4. 按分布采样 N 次
def sample_counts(n, probs, seed=42):
rng = random.Random(seed)
counts = [0, 0]
for _ in range(n):
r = rng.random()
if r < probs[0]:
counts[0] += 1
else:
counts[1] += 1
return counts
# 5. 多组采样数对比
for n in [100, 1000, 10000, 100000]:
c = sample_counts(n, probs)
f0, f1 = c[0]/n, c[1]/n
err0, err1 = abs(f0-p0), abs(f1-p1)
print(f"N={n:>6d} count0={c[0]:>6d} count1={c[1]:>6d} "
f"f0={f0:.4f} f1={f1:.4f} |Δp0|={err0:.4f} |Δp1|={err1:.4f}")
这段代码的关键点有三处:一是先做归一化断言,防止输入态本身不合法;二是用累积概率判断随机数落在哪个区间,从而按 p₀、p₁ 抽取结果;三是固定随机种子,使结果可复现。示例输出(固定种子下的预期现象,非实测数据)大致为:N=100 时频率偏差可能在 0.05 量级,N=10000 时偏差通常降到 0.01 量级,N=100000 时进一步缩小。具体数值随种子变化,但趋势稳定。
理论分布与采样结果的对照
下图把“态矢量 → 概率分布 → 有限采样 → 频率对比”这条数据链画在一起,并标出不同采样数下经验频率向理论概率收敛的方向。图中左侧是模型构建,右侧是采样验证,中间用误差量级作为判读依据。
收敛行为的判读与验证要点
从图中可以读出三个判读要点。第一,理论概率是两条水平虚线,经验频率点应围绕它们上下波动,而不是单调逼近;有限采样下出现偏差是正常的。第二,随着 N 从 100 增大到 100000,波动幅度按 1/√N 缩小,图中两条趋势线逐渐贴近理论线,这正是“收敛”的可视化含义。第三,判读时不要只看单次偏差,而要用 σ = √(p(1−p)/N) 作为尺度:例如 N=1000 时 σ ≈ 0.015,偏差 0.03 约等于 2σ,属于正常范围;若偏差达到 0.1 以上,就应怀疑采样区间判断写反、概率未归一化或随机数源有问题。
验证时建议做两件事:一是用同一随机种子重复运行,确认结果可复现;二是把 N 按 10 倍递增,记录 |f₀ − p₀|,观察它是否大致按 1/√N 下降。若下降趋势明显偏离,说明采样实现或概率模型存在系统性错误,而不是统计涨落。
可直接复用的采样验证清单
| 检查项 | 本案例取值/做法 | 通过条件 |
|---|---|---|
| 态矢量归一化 | |α|²+|β|² | 与 1 的差 < 1e-12 |
| 概率模型 | p₀=0.36,p₁=0.64 | 非负且和为 1 |
| 采样区间 | r < p₀ 取 0,否则取 1 | 与概率定义一致 |
| 可复现性 | 固定随机种子 | 重复运行结果相同 |
| 收敛判读 | σ = √(p(1−p)/N) | 偏差在 3σ 内 |
| 趋势验证 | N 按 10 倍递增 | 偏差大致按 1/√N 下降 |
按上述清单执行后,本案例的交付物就是一个可复现的采样脚本、一组不同 N 下的频率对照,以及基于 σ 的判读结论。它验证的是“概率分布模型 + 有限采样”这一环节的正确性与收敛性,为后续密度矩阵、布洛赫球等建模任务提供测量统计层面的基础。