> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# LLM遵循本福特定律吗？
- URL: https://www.hubwiz.com/blog/do-llms-follow-benford-s-law/
- Published: 2026-03-20T11:52:18.000Z
- Updated: 2026-03-20T11:52:18.000Z
- Description: 本福特定律，也称为首位数字定律，描述了许多现实数据集中首位数字的频率分布。该定律指出，在许多自然产生的数字集合中，首位有效数字很可能是较小的数字。
- Author: admin
- Tags: LLM, #Import 2026-10-14 14:41

要求大语言模型生成合成数据是一个合理的起点。但这些数据有多真实？我用 [Gemini CLI](https://github.com/google-gemini/gemini-cli?ref=hubwiz.com) 进行了一系列实验来寻找答案。

如果你查看地球上每个城市的人口，或每条河流的长度，你会发现一个奇怪的一致模式。大约 30.1% 的数字以数字 1 开头。只有约 4.6% 以 9 开头。

这就是[本福特定律](https://en.wikipedia.org/wiki/Benford's%5Flaw?ref=hubwiz.com)，也称为首位数字定律。它描述了许多现实数据集中首位数字的频率分布。该定律指出，在许多自然产生的数字集合中，首位有效数字很可能是较小的数字。其数学原因是许多自然过程是乘法性的而非加法性的。人口、股票价格和城市规模都是以当前值的百分比增长的。

![本福特定律分布图](https://www.hubwiz.com/blog/content/images/2026/03/1-asVgQCCyxw_uTnQWssmejg.png)

在法务会计中，这个定律是一个[强大的工具](https://doi.org/10.1111/j.1740-9713.2016.00919.x?ref=hubwiz.com)。通过比较数据集的首位数字与本福特分布，审计师可以快速标记不自然的数据以进行进一步调查。

## 1、使用真实世界估算的基线

我从一个简单的实验开始。我让 Gemini 列出全球 250 个随机城市的估计人口。我想看看模型对真实世界数据的内部知识是否遵循首位数字定律。

设置很简单。我使用 Python 脚本调用 CLI，使用 [Gemini 3 Flash Preview](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash?utm%5Fcampaign=CDR%5F0x2b6f3004%5Fdefault%5Fb493282642&utm%5Fmedium=external&utm%5Fsource=blog) 模型：

```
# 初始实验调用
prompt = "List the estimated populations of 250 random cities. Format: 'City: 123456'."
result = subprocess.run(["gemini", "ask", prompt], capture_output=True, text=True)

```

乍一看，结果偏差不大！你可以看到数字 5 有一个尖峰，这是因为模型模仿了人类将数字四舍五入到最接近的 5 的习惯，这被称为[堆叠效应](https://cran.r-project.org/web/packages/heaping/vignettes/heaping-intro.html?ref=hubwiz.com)。

![首位数字分布图](https://www.hubwiz.com/blog/content/images/2026/03/1-oN5A5BdWnm_BU-5FBJ2ZsA.png)

## 2、使用 Gemini 3 模型的实验

你可能会注意到 Gemini 只是在回忆城市的现有人口，这应该已经遵循本福特定律。在下一个实验中，我更新了实验设计，为虚构的星际城市生成新数据。

此外，为了避免我们在首位数字 5 中看到的四舍五入问题，我会要求提供"精确的、未四舍五入的"答案。

我使用了 10 批，每批 100 个项目，使用不同的随机种子，并在每个提示中改变行星生物群落（例如"火山群岛"）。

```
# 带上下文种子的批处理逻辑
for i in range(10):
    biome = BIOMES[i]
    prompt = f"Generate 100 fictional settlements in the {biome} of Zephyr-9. Provide exact, unrounded populations."
    # API 调用随之进行...

```

我们看到 Gemini 过度加权了首位数字 1，与随机概率（1/9）相比，结果看起来与预期分布相差甚远。使用自由度为 8 的[卡方检验](https://en.wikipedia.org/wiki/Chi-squared%5Ftest?ref=hubwiz.com)得出的[p 值](https://en.wikipedia.org/wiki/P-value?ref=hubwiz.com)为 0.000，确认分布不匹配。

我在其他 Gemini 模型上尝试了相同的实验：[Gemini 3.1 Flash Lite Preview](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-flash-lite?utm%5Fcampaign=CDR%5F0x2b6f3004%5Fdefault%5Fb493282642&utm%5Fmedium=external&utm%5Fsource=blog) 和 [Gemini 3.1 Pro Preview](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro?utm%5Fcampaign=CDR%5F0x2b6f3004%5Fdefault%5Fb493282642&utm%5Fmedium=external&utm%5Fsource=blog)。结论相同：差距很大。

![各模型首位数字分布对比](https://www.hubwiz.com/blog/content/images/2026/03/1-SRe7pKjh3oiVdTDgbfzWeA.png)

## 3、提示词校准

在我最后一个实验中，我在提示中提供了预期分布：

```
# 校准约束
BENFORD_DIST = "1: 30.1%, 2: 17.6%, 3: 12.5%, 4: 9.7%, 5: 7.9%, 6: 6.7%, 7: 5.8%, 8: 5.1%, 9: 4.6%"
prompt = f"Generate 100 settlements. Follow this distribution: {BENFORD_DIST}."

```

这个方法效果很好！这次卡方检验的 p 值为 0.97，表明模型的指令遵循能力足够高，可以手动覆盖其内部偏见。

虽然生成的数据对于首位数字遵循了本福特定律，但这并不一定意味着它类似于自然数据。我们可以将此分析扩展到第二和第三位数字，并应用其他可能失败的统计检验。

![校准后的分布图](https://www.hubwiz.com/blog/content/images/2026/03/1-Gk8evsh5f4UFnXiGggSPdQ.png)

## 4、工程解决方案：工具增强生成

即使使用提示词校准，结果仍然很脆弱。我的建议是将 LLM 视为规划器。使用模型来定义你的世界的逻辑——城市名称、生物群落、经济——但使用[工具](https://cloud.google.com/blog/topics/developers-practitioners/tools-make-an-agent-from-zero-to-assistant-with-adk?utm%5Fcampaign=CDR%5F0x2b6f3004%5Fdefault%5Fb493282642&utm%5Fmedium=external&utm%5Fsource=blog)和[函数调用](https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/function-calling?utm%5Fcampaign=CDR%5F0x2b6f3004%5Fdefault%5Fb493282642&utm%5Fmedium=external&utm%5Fsource=blog)来生成数字。

与其要求 1000 个人口数据，你可以让模型定义分布的参数（如均值和标准差），然后触发 Python 脚本从真正的 [numpy.random.lognormal](https://numpy.org/doc/stable/reference/random/generated/numpy.random.lognormal.html?ref=hubwiz.com) 分布中采样。

Gemini 是语言大师，但自然数据遵循统计定律。要构建一个感觉真实的世界，你必须用代码弥合这个差距。

---

原文链接: [Do Large Language Models follow Benford's Law?](https://medium.com/google-cloud/do-large-language-models-follow-benfords-law-c47c9f0f9070?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处