1 开头的数字为什么占三成:本福特定律,和它抓假账的本事
- 作者:Bougie
- 创建于:2026-10-23
- 更新于:2026-10-23
先做个游戏。
给你 60 秒,在纸上写 100 个"随机数"。别用计算器,就凭感觉写。
写完之后数一下每个数的第一位。你大概会写出 11 个 1、11 个 2、11 个 3……九个数字平分,各约 11.1%。这是绝大多数人对"随机"的直觉。
但真实世界的数字不是这么长的。

我扫了自己硬盘上 40 万个文件的字节数,数它们的首位:
1: 29.3% 2: 17.5% 3: 12.3% 4: 10.7% 5: 8.1%
6: 6.5% 7: 6.5% 8: 4.8% 9: 4.4%
1 开头的接近三成,9 开头的不到二十分之一。
这不只是文件大小。河流长度、股票收盘价、城市人口、地震能量、物理常数表、你手机上每个 App 的流量——只要不是人为规定的编号,几乎都是这个形状。它叫本福特定律(Benford's Law),而且它精确到小数点后三位:
P(d) = log₁₀(1 + 1/d) d = 1, 2, ..., 9
d=1: log₁₀(2/1) = 0.30103
d=9: log₁₀(10/9) = 0.04576
我把这件事从头跑了一遍,下面是我真正觉得有意思的部分——包括一个我完全没预料到的例外。
# 一、那张表
| 首位 | 本福特 | 均匀分布 |
|---|---|---|
| 1 | 30.103% | 11.1% |
| 2 | 17.609% | 11.1% |
| 3 | 12.494% | 11.1% |
| 4 | 9.691% | 11.1% |
| 5 | 7.918% | 11.1% |
| 6 | 6.695% | 11.1% |
| 7 | 5.799% | 11.1% |
| 8 | 5.115% | 11.1% |
| 9 | 4.576% | 11.1% |
九个概率精确加起来等于 1(实测 1.000000000000)——因为 Σ log₁₀(1+1/d) = log₁₀(2×3/2×4/3×…×10/9) = log₁₀10 = 1,中间的项全部约掉了。第一次看到这个约简的时候我愣了一下:这条定律的"归一化"是望远镜积,不是什么拟合出来的常数。
它还有个二阶版本:第二位数字是 0 的概率 11.968%,是 9 的概率只有 8.500%。所以"第一位是 1"的账目里,第二位也不太平。
历史上有两个时间点:
- 1881 年,天文学家 Simon Newcomb 注意到一件小事:图书馆里对数表的前几页,被翻得比后面脏得多。前几页是 1.0~1.9 的对数。他写了篇两页的短文,给出了那张表,然后没人理。
- 1938 年,通用电气的工程师 Frank Benford 收集了 20229 个数字——河流面积、人口、死亡率、棒球统计、杂志文章里的数字、物理常数——发现它们都服从同一条曲线。这次定律有了名字(虽然 Newcomb 早了 57 年,这就是典型的 Stigler 定律)。
Benford 当时的直觉是"大自然偏爱小的首位数字"。这个解释是错的。真正的原因要到 1961 年才被说清楚。
# 二、为什么偏偏是 log₁₀(1+1/d)
把任何一个正数 x 写成科学计数法:x = m × 10ᵏ,其中 m ∈ [1, 10)。那么:
x 的首位是 d ⟺ m ∈ [d, d+1) ⟺ log₁₀x 的小数部分落在 [log₁₀d, log₁₀(d+1))
那个区间的长度是 log₁₀(d+1) − log₁₀d = log₁₀(1 + 1/d)。
所以问题变成了:log₁₀x 的小数部分是不是均匀的?
- 首位是 1 的区间是 [0, 0.301),长度 0.301 → 30.1%
- 首位是 9 的区间是 [0.954, 1),长度 0.046 → 4.6%
如果 log₁₀x 的小数部分在 [0,1) 上均匀分布,本福特定律就是恒等式,不需要任何"大自然的偏好"。而"小数部分均匀"换一种说法就是:x 的密度正比于 1/x。
为什么真实数据会是这样?1961 年 Roger Pinkham 给了一个漂亮得多的答案,1995 年 Ted Hill 把它推广成"基底不变性":
在"首位分布不随单位换算而变"这个要求下,本福特分布是唯一解。
这句话很值得停下来想。你有一堆以米为单位的河流长度,它的首位分布是某个形状;现在全部换算成英尺(乘 3.28),首位分布必须还是那个形状——因为河流没变,只是尺子变了。要求是:把一个数据集整体乘上任意常数,首位分布不变。满足这个条件的分布,只可能是对数均匀的,也就是本福特。
我实测了一下。拿一个本福特型的数据集和一个均匀分布的数据集,分别乘 1、2、3、7、1.7、0.37,看偏离度(MAD,越小越合本福特):
| 乘数 | ×1 | ×2 | ×3 | ×7 | ×1.7 | ×0.37 |
|---|---|---|---|---|---|---|
| 本福特型数据 | 0.0015 | 0.0013 | 0.0011 | 0.0012 | 0.0009 | 0.0012 |
| 均匀分布数据 | 0.0604 | 0.0604 | 0.0593 | 0.0598 | 0.0487 | 0.0491 |
均匀数据集乘完之后还是那个样子(MAD 恒在 0.05~0.06),本福特数据集换任何单位都纹丝不动。本福特定律就是"和单位无关"这件事本身的数学后果。

# 三、乘法造出来的随机
那么"对数均匀"又是从哪儿来的?答案是乘法。
中心极限定理说的是:很多独立的东西相加,结果是正态分布(钟形)。但真实世界大量的量是相乘出来的——人口是"上年人口 × 增长率",复利是"本金 × (1+r)ⁿ",公司营收是"员工数 × 客单价 × 转化率 × …"。
一堆正数相乘,取对数就变成相加。所以:很多独立因子相乘 ⟹ log x 近似正态 ⟹ 当这个正态足够宽时,它对 1 取模后趋于均匀 ⟹ 本福特。
"足够宽"是多少?我让一个数从 1 出发,每一步乘一个 [1, 3) 之间的随机数,跑 k 步,看首位分布怎么长出来:
| 步数 k | σ(log₁₀x)(数量级) | 首位分布 1→9 (%) | MAD |
|---|---|---|---|
| 1 | 0.134 | 49.9 / 50.1 / 0 / 0 / 0 / 0 / 0 / 0 / 0 | 0.1162 |
| 2 | 0.190 | 9.7 / 22.6 / 23.7 / 17.4 / 12.5 / 8.1 / 4.7 / 1.4 / 0 | 0.0662 |
| 5 | 0.298 | 27.8 / 22.7 / 15.5 / 10.5 / 7.4 / 5.3 / 4.2 / 3.5 / 3.2 | 0.0196 |
| 10 | 0.423 | 30.0 / 16.9 / 12.2 / 9.8 / 8.2 / 7.0 / 6.0 / 5.3 / 4.6 | 0.0024 |
| 25 | 0.667 | 30.3 / 17.4 / 12.5 / 9.9 / 7.8 / 6.7 / 5.9 / 5.0 / 4.5 | 0.0012 |
| 50 | 0.949 | 30.1 / 17.6 / 12.5 / 9.7 / 7.8 / 6.7 / 5.8 / 5.1 / 4.6 | 0.0004 |
| 100 | 1.333 | 30.0 / 17.6 / 12.5 / 9.8 / 7.9 / 6.7 / 5.8 / 5.2 / 4.5 | 0.0004 |
十步就够了。 到第 10 步,σ(log₁₀x) ≈ 0.42 个数量级,首位分布已经和理论值重合到小数点后一位。再往后它就只是越来越准。
用对数正态分布直接扫 σ 也是同样的结论(σ 以数量级计):
| σ(log₁₀x) | 0.087 | 0.217 | 0.434 | 0.869 | 1.737 |
|---|---|---|---|---|---|
| MAD | 0.1125 | 0.0528 | 0.0023 | 0.0006 | 0.0006 |
门槛就卡在 0.4 个数量级附近:低于它,数据还挤在一起,首位分布是歪的;过了它,就基本是本福特。
指数增长也一样,但有个反直觉的细节——增长率太小反而不符合:
| 增长率 r(跑 2000 步) | 覆盖数量级 | MAD | 结论 |
|---|---|---|---|
| 0.001 | 0.87 | 0.0284 | 不合格 |
| 0.01 | 8.7 | 0.0054 | 通过 |
| 0.03 | 26 | 0.0021 | 通过 |
| 0.07 | 60 | 0.0008 | 通过 |
| 0.2 | 172 | 0.0004 | 通过 |
r = 0.001 时 2000 步只跨了 0.87 个数量级,数据还是挤着的,首位分布是 34.6/20.3/14.3/11.2/9.1/7.7/2.7/0/0——连 8 和 9 都没出现。所以"指数增长一定符合本福特"这话得加个前提:得长得够久。
# 四、天生就符合的那几个数列
有些数列一个随机因子都没有,却完美符合。原因是指数增长换了个皮:
| 数列 | n | MAD | χ² (df=8) | 首位分布 1→9 (%) |
|---|---|---|---|---|
| 2ⁿ | 4000 | 0.00027 | 0.07 | 30.1 / 17.6 / 12.5 / 9.7 / 7.9 / 6.7 / 5.8 / 5.2 / 4.5 |
| 斐波那契数列 | 4000 | 0.00025 | 0.03 | 30.1 / 17.6 / 12.5 / 9.7 / 8.0 / 6.7 / 5.8 / 5.1 / 4.6 |
| n! | 800 | 0.0084 | 11.0 | 30.1 / 18.3 / 13.0 / 8.3 / 6.5 / 8.9 / 5.0 / 5.0 / 5.0 |
| nⁿ | 5000 | 0.0046 | 11.9 | 29.2 / 19.3 / 12.8 / 9.2 / 7.7 / 6.7 / 5.6 / 4.9 / 4.4 |
2ⁿ 的 χ² 只有 0.07(临界值 15.507),也就是说 4000 个数字,偏离理论值的程度比随机波动该有的还小——因为它根本不是随机的。首位是 d 当且仅当 frac(n·log₁₀2) ∈ [log₁₀d, log₁₀(d+1)),而 log₁₀2 是无理数,所以 n·log₁₀2 的小数部分在 [0,1) 上等分布(Weyl 定理)。这是一个确定性的序列在做一件看起来很随机的事。
斐波那契同理:Binet 公式里 Fₙ ≈ φⁿ/√5,log₁₀φ 也是无理数。
(顺带一提:这也解释了为什么计算尺能用。对数刻度上,乘法就是加法,而"等分布"就是"这把尺子每个位置被用到的机会差不多"。)

# 五、素数:一个漂亮的例外
写到这里我本来以为"凡是自然增长的东西都符合"。然后我筛了 1 亿以内的素数,数了一下它们的首位:
| 范围 | 素数个数 | 1 开头的比例 | 首位分布 1→9 (%) | MAD |
|---|---|---|---|---|
| ≤ 10³ | 168 | 14.88% | 14.9 / 11.3 / 11.3 / 11.9 / 10.1 / 10.7 / 10.7 / 10.1 / 8.9 | 0.0505 |
| ≤ 10⁴ | 1 229 | 13.02% | 13.0 / 11.9 / 11.3 / 11.3 / 10.7 / 11.0 / 10.2 / 10.3 / 10.3 | 0.0533 |
| ≤ 10⁵ | 9 592 | 12.44% | 12.4 / 11.8 / 11.4 / 11.1 / 11.0 / 10.6 / 10.7 / 10.5 / 10.5 | 0.0546 |
| ≤ 10⁶ | 78 498 | 12.21% | 12.2 / 11.6 / 11.4 / 11.1 / 11.0 / 10.8 / 10.7 / 10.6 / 10.5 | 0.0554 |
| ≤ 10⁷ | 664 579 | 12.04% | 12.0 / 11.6 / 11.3 / 11.2 / 11.0 / 10.9 / 10.8 / 10.7 / 10.6 | 0.0561 |
| ≤ 10⁸ | 5 761 455 | 11.91% | 11.9 / 11.5 / 11.3 / 11.1 / 11.0 / 10.9 / 10.8 / 10.7 / 10.7 | 0.0566 |
1 开头的素数只有 11.9%,不是 30.1%——几乎就是均匀分布的 11.1%。
更怪的是趋势:范围每扩大十倍,1 开头的比例是 14.88 → 13.02 → 12.44 → 12.21 → 12.04 → 11.91,一路下降。它没有在向本福特收敛,它在向均匀收敛。MAD 也在变大(0.0505 → 0.0566),也就是说离本福特越来越远。
为什么会这样?
素数定理说 x 附近的素数密度约是 1/ln x。在一个数量级内部,1/ln x 几乎是常数——从 10⁷ 到 10⁸,ln x 只从 16.1 变到 18.4,密度只差 12%。而在单个数量级 [10ᵏ, 10ᵏ⁺¹) 里,九个首位区间 [10ᵏ, 2·10ᵏ)、[2·10ᵏ, 3·10ᵏ)……[9·10ᵏ, 10ᵏ⁺¹) 的长度完全相等,都是 10ᵏ。密度近似均匀 + 区间长度相等 ⟹ 首位近似均匀。
那为什么整个数据集不由"所有数量级加起来"决定?因为最大的那个数量级主导了总数:每上一个数量级,素数个数大约乘 9。所以 ≤10⁸ 的素数里,[10⁷, 10⁸) 这一段就占了 5 096 876 / 5 761 455 = 88.5%。
我把那一段单独拿出来数了一遍:1 开头占 11.89%,和整体的 11.91% 几乎一样。整个数据集的首位分布,基本上就是最后一个数量级的首位分布。
所以本福特定律在这里失效的机制很清楚:本福特需要"每个数量级贡献相当"才能叠出 1/x 的形状(这正是第二节那个尺度不变性要求的实质)。素数偏偏是几何式增长的,最大的那一层把其他全盖住了,而单层内部是均匀的。

# 六、什么时候它根本不成立
这条定律有个硬前提:数据得跨足够多数量级,且密度大致正比于 1/x。违反它的例子比符合它的更有教育意义:
| 数据 | 首位分布 1→9 (%) | MAD |
|---|---|---|
| 身高(150–199 cm) | 100 / 0 / 0 / 0 / 0 / 0 / 0 / 0 / 0 | 0.1553 |
| 身高(4.0–6.9 ft) | 0 / 0 / 0 / 34.4 / 34.7 / 30.9 / 0 / 0 / 0 | 0.1682 |
| 发票号(100–999) | 11.1 × 9 | 0.0596 |
| 整数 1…99999 | 11.1 × 9 | 0.0597 |
| 硬盘上 40 万个文件的字节数 | 29.3 / 17.5 / 12.3 / 10.7 / 8.1 / 6.5 / 6.5 / 4.8 / 4.4 | 0.0040 |
| 我这个仓库的 git 增删行数(5 661 条) | 47.6 / 18.8 / 10.0 / 7.3 / 4.7 / 4.0 / 3.4 / 2.2 / 2.0 | 0.0416 |
身高用厘米记,100% 是 1。 换成英尺,就变成 4、5、6 三分天下。这就是尺度不变性反过来用:一个只跨 0.12 个数量级的数据集,首位分布完全由量纲决定,跟"自然规律"一点关系没有。
最后一行是我最喜欢的一条负面结果。git 的增删行数是如假包换的真实数据,但它不合格——47.6% 的改动是 1 行,绝大多数提交都很小,分布挤在 1~9 这个区间里。所以"真实数据就一定符合本福特"是句错话。
# 七、一个会冤枉好人的坑
现在假设你是个审计,拿到了一份数据,想用本福特查它是不是编的。这里有个陷阱。
我生成了"对数均匀、跨 r 个数量级"的数据——这是最规整、最无辜的一族分布——然后用 χ² 检验(df=8,α=0.05,临界值 15.507)判它合不合格,每个 n=1000 跑 3000 次:
| 跨越 r 个数量级 | MAD | n=1000 时被判"不合格"的比例 |
|---|---|---|
| 0.3 | 0.1553 | 100.0% |
| 0.5 | 0.1059 | 100.0% |
| 0.8 | 0.0432 | 100.0% |
| 1 | 0.0005 | 4.4% |
| 1.2 | 0.0255 | 100.0% |
| 1.5 | 0.0357 | 100.0% |
| 2 | 0.0004 | 4.5% |
| 3 | 0.0005 | 4.8% |
| 5 | 0.0004 | 4.7% |
注意那个 r = 1.2:一份完全诚实、只是刚好跨了 1.2 个数量级的数据,会被 100% 判为造假。而跨整整 1 个、2 个、3 个数量级的数据,误报率就是 4~5%(这正是 α=0.05 该有的水平)。
原因和素数那节是同一个:只有横跨完整的数量级,每个数量级才能等权叠加出 1/x 的形状。跨了 1.2 个,多出来的那 0.2 个数量级把 1、2、3 这几位抬高了(实测 41.6/14.8/10.5/…),于是全盘崩掉。
还有一条更容易踩的:我试着把"跨很多数量级"单独拿出来救场——在每个数量级内部均匀取值,然后混合 1、2、3、5、8 个数量级。结果 MAD 全都落在 0.0595~0.0601,始终是均匀的,一点没变好。
所以关键不是"跨得多",是密度必须正比于 1/x。 这句话值得单独抄一遍。
# 八、抓假账,到底要多少条记录
好,现在回到最实际的问题。
假设一份账目本来是干净的本福特数据,有人往里掺了比例 f 的假数字(造假者让首位均匀分布)。用 χ² 检验,α=0.05,每个格子跑 1000 次,检出率是这样:
| 记录数 n \ 掺假比例 | 1% | 2% | 5% | 10% | 20% | 50% | 100% |
|---|---|---|---|---|---|---|---|
| 50 | 4.2 | 5.4 | 4.6 | 9.6 | 13.1 | 38.0 | 94.9 |
| 100 | 5.0 | 4.8 | 6.0 | 7.1 | 15.9 | 65.5 | 100.0 |
| 250 | 5.7 | 6.6 | 8.2 | 12.0 | 25.9 | 97.2 | 100.0 |
| 500 | 5.6 | 5.5 | 7.6 | 15.3 | 50.4 | 100.0 | 100.0 |
| 1 000 | 4.8 | 6.1 | 11.9 | 24.7 | 84.9 | 100.0 | 100.0 |
| 5 000 | 5.8 | 8.1 | 31.0 | 93.0 | 100.0 | 100.0 | 100.0 |
| 20 000 | 8.7 | 18.2 | 91.2 | 100.0 | 100.0 | 100.0 | 100.0 |
(对照:完全干净的数据,各个 n 下的误报率都稳定在 4.7%~5.5%,正好是 α=0.05。这一点很重要——这个检验的"无辜者误判率"是可控的。)
反过来问"要有九成把握,最少需要多少条记录":
| 掺假比例 | 检出率 ≥ 90% 所需的最小 n |
|---|---|
| 5% | 20 000 |
| 10% | 5 000 |
| 20% | 2 000 |
| 30% | 1 000 |
这就是这条定律真正的分量,也是它的边界:它是个统计检验,不是测谎仪。 1000 条记录里掺了 10% 的假,你只有 24.7% 的概率抓到——和瞎猜强不了多少。掺到 20%,才升到 84.9%。想抓 5% 的猫腻,得有上万条记录。

# 九、两个统计陷阱
写这篇之前我以为"算个 χ²,大于 15.5 就是有问题"。跑完发现两个问题。
陷阱一:χ² 会随样本量膨胀,MAD 不会。
我那 40 万个文件大小的数据,MAD = 0.00398(按 Nigrini 的标准,≤0.006 属于"高度吻合")。但它的 χ² = 944.6,p < 0.001,铁板钉钉"拒绝"。
为什么?因为 χ² 统计量的期望大致正比于 n·(真实偏离量)²。样本一大,哪怕偏差小到实务上完全无所谓,χ² 也会冲到天上去。同一个数据集,n 从 100 涨到 100000,MAD 均值从 0.0232 一路降到 0.00079(越来越"吻合"),而 χ² 均值从 7.8 涨到 9.0、检出率从 4.0% 涨到 9.5%(越来越"可疑")。
所以实务上两条路:样本小(几千条以内)用 χ²,样本大了必须改用 MAD,或者干脆看单个数字的 Z 统计量。
陷阱二:MAD 的阈值在小样本下是废的。
Nigrini 给的经验阈值是 MAD ≤ 0.006 高度吻合、0.006~0.012 可接受、0.012~0.015 勉强、> 0.015 不合格。但这个阈值是给大样本定的。我拿完全干净的本福特数据去测,看它被 MAD > 0.015 误杀的比例:
| n | 50 | 100 | 250 | 500 | 1 000 | 5 000 | 20 000 |
|---|---|---|---|---|---|---|---|
| 误报率 | 98.6% | 91.0% | 44.9% | 7.5% | 0.1% | 0.0% | 0.0% |
n = 50 的时候,一份绝对清白的数据有 98.6% 的概率被判"不合格"。原因很简单:50 个样本本身抖得就比 0.015 大。
所以这两条得配套记:MAD 只在 n ≳ 1000 时可读,χ² 只在 n 不太大时可读。 用反了就会得出荒谬结论——一边是"我的硬盘有 40 万个文件,所以文件系统在造假",一边是"这份 50 条的账目一定是假的"。
# 最后
写完这篇,我记住的是三个数字:
- 30.1% —— 1 开头的比例。它不是什么经验拟合,是 log₁₀2,是"首位分布不该随单位而变"这件事的唯一解。
- 11.9% —— 1 开头的素数只占 11.9%,而且范围越大越接近均匀的 11.1%。这是我跑之前完全没想到的:素数增长得太快,最大的那个数量级吃掉了 88.5% 的样本,而单个数量级内部九个首位区间长度相等,所以是均匀的。它提醒我,"自然的东西"和"符合本福特的东西"是两回事。
- 5 000 —— 账目里掺 10% 的假数字,要有九成把握抓到,需要五千条记录。一千条只有 24.7%。
这条定律最迷人的地方在于:它描述的是随机性本身的形状,而不是任何一个具体系统的规律。它不在乎你数的是河流、股票还是硬盘上的字节;它只在乎一件事——这个数是不是被很多独立的东西乘出来的。
而人凭感觉写出来的数字,是被"加"出来的:先想到一个大概的量级,再在这个量级里挑一个看着顺眼的数。于是 1 不会占三成,9 也不会只有 4.6%。
所以下次有人让你"随便写几个随机数",你至少知道,随便写出来的那些数,一眼就会被看穿。
附注:文中所有数字都由本机脚本跑出(素数用奇筛筛到 10⁸,其余为 BigInt 精确计算 + 蒙特卡洛)。判别标准:χ² 自由度 8,临界值 13.362(α=0.10) / 15.507(α=0.05) / 20.090(α=0.01);MAD 为九个 |实测比例 − 本福特比例| 的算术平均。想自己验的话,最短的路径是:拿你硬盘上所有文件的字节数,数第一位,应该得到 30/18/12/10/8/7/6/5/4。
# 图片版权
- Account Book Ledger MET DP212609.jpg (opens new window) — John Carlin,CC0
- Slide Rule-Karoly Szabo.jpg (opens new window) — Tamas Szabo,CC BY-SA 2.5
- Burroughs Adding and Listing machine 1912 at CHM.jpg (opens new window) — Tomwsulcer,CC0
- Earth elevation histogram fr.jpg (opens new window) — Lamiot,Public domain
- Euro bank notes centered, maestro card, master card — Mattes 2006-05-12.jpg (opens new window) — User:Mattes,Public domain
- Ulam Spiral Divisors 100000.png (opens new window) — Cortexd,CC BY-SA 3.0