2. LTspice中的统计分布:高斯分布与均匀分布的定义与参数设置
做蒙特卡洛分析,说白了就是给电路参数加「随机扰动」。但随机不是乱来——你得告诉LTspice:扰动长什么样?范围多大?集中还是分散?
这就引出了两种最基本的统计分布:高斯分布和均匀分布。我个人习惯把它们比作「靶心分布」和「地毯分布」——一个围着目标值聚集,一个在区间内平铺。下面我们一个一个说清楚。
2.1 高斯分布(Gaussian / Normal Distribution)
高斯分布,也叫正态分布,是自然界最常见的分布。电阻的阻值偏差、晶体管的阈值电压漂移、运放的失调电压……这些参数偏差基本都服从高斯分布。
2.1.1 数学定义
高斯分布由两个参数决定:
- 均值 μ(Mean):分布的中心位置,也就是标称值。
- 标准差 σ(Standard Deviation):分布的离散程度,σ 越大,曲线越「胖」。
概率密度函数长这样:
f(x) = (1 / (σ * √(2π))) * exp(-(x - μ)² / (2σ²))
嗯,公式看着有点吓人。但在LTspice里你根本不用手算——只需要告诉它 μ 和 σ 就行。
2.1.2 在LTspice中的参数设置
LTspice用 gauss(x) 函数生成高斯分布随机数。这里的 x 不是标准差,而是 3σ 值。什么意思?
关键规则: gauss(x) 生成的随机数,99.7% 落在 [-x, +x] 区间内。也就是说,x = 3σ。
举个例子:
R1 1 0 {10k + gauss(0.3k)}
这表示一个标称值 10kΩ 的电阻,3σ 偏差为 0.3kΩ。换算一下:
- σ = 0.3k / 3 = 0.1kΩ
- 约 68% 的样本落在 9.9kΩ ~ 10.1kΩ 之间
- 约 95% 的样本落在 9.8kΩ ~ 10.2kΩ 之间
- 约 99.7% 的样本落在 9.7kΩ ~ 10.3kΩ 之间
我的习惯: 做电阻偏差分析时,我一般用 1% 精度电阻的 3σ 值。比如 10kΩ 1% 电阻,3σ = 0.1kΩ,写成 gauss(0.1k)。这样仿真出来的分布才贴近真实器件。
2.1.3 高斯分布的特点
| 特性 | 说明 |
|---|---|
| 对称性 | 均值两侧完全对称 |
| 集中性 | 大部分样本集中在均值附近 |
| 3σ 原则 | 99.7% 的样本落在 ±3σ 内 |
| 适用场景 | 电阻、电容、晶体管参数、运放失调 |
2.2 均匀分布(Uniform Distribution)
均匀分布就简单多了——在指定区间内,每个值出现的概率完全相等。没有「中间多、两边少」的说法。
2.2.1 数学定义
均匀分布由两个参数决定:
- 下限 a:最小值
- 上限 b:最大值
概率密度函数:
f(x) = 1 / (b - a), a ≤ x ≤ b
说白了,就是一条水平线。
2.2.2 在LTspice中的参数设置
LTspice用 flat(x) 函数生成均匀分布随机数。x 表示 半区间宽度,生成的随机数落在 [-x, +x] 内。
举个例子:
R1 1 0 {10k + flat(0.1k)}
这表示电阻值在 9.9kΩ ~ 10.1kΩ 之间均匀分布。每个值出现的概率都一样。
注意: flat(x) 的区间是 [-x, +x],不是 [0, x]。如果你想要 10kΩ ~ 10.2kΩ 的均匀分布,得写成 {10.1k + flat(0.1k)}。
2.2.3 均匀分布的特点
| 特性 | 说明 |
|---|---|
| 等概率 | 区间内每个值概率相同 |
| 无聚集 | 没有「中间多两边少」 |
| 边界明确 | 有严格上下限 |
| 适用场景 | 量化误差、初始条件、最坏情况分析 |
2.3 两种分布的对比
我经常被问到:「什么时候用高斯,什么时候用均匀?」
我的回答是:看器件手册。如果手册给了标准差或 3σ 值,用高斯;如果只给了范围(比如 ±5%),用均匀。
| 对比维度 | 高斯分布 | 均匀分布 |
|---|---|---|
| LTspice函数 | gauss(x) |
flat(x) |
| 参数含义 | x = 3σ | x = 半区间宽度 |
| 样本分布 | 中间密、两边疏 | 均匀分布 |
| 极端值概率 | 极低 | 与中间值相同 |
| 典型应用 | 器件参数偏差 | 最坏情况分析 |
2.4 知识结构图
下面这张图帮你理清两种分布的核心逻辑:
2.5 实战小技巧
最后分享几个我在项目中踩过的坑:
- 别把 gauss(x) 当标准差用。 我见过有人写
gauss(0.01)以为 σ=0.01,结果仿真出来的分布窄得离谱——因为实际 σ 只有 0.0033。 - 均匀分布也能模拟高斯。 如果你不确定器件偏差的分布类型,用均匀分布做最坏情况分析更安全。虽然结果偏保守,但不会漏掉极端情况。
- 检查随机种子。 LTspice 每次仿真用的随机数种子不同。如果你发现两次仿真结果完全一样,检查一下是否忘了加
.option mc_seed=或者种子值被固定了。
我的经验: 做蒙特卡洛分析前,先用 10 次仿真跑一下,看看参数分布是否合理。如果 gauss(0.3k) 出来的电阻值全在 9.99k~10.01k 之间,那肯定写错了——赶紧检查 x 值是不是设成了 σ 而不是 3σ。