让 gpt-4.1 从 1 到 100 里“随机”选一个整数,连续问 1 万次,结果会是什么?
不是一条平线。37、42、73 冒尖,整十数几乎蒸发,69 反而低于预期。
这事真正有意思的地方,不是“AI 连随机数都不会选”。LLM 本来就不是骰子。它吐出的所谓随机,更像人类语料、采样机制和后训练规范共同压出来的分布。
这次实验测到什么
边界先说清楚:这个 GitHub 项目测的是 OpenAI gpt-4.1,通过 Responses API 调用,不是 ChatGPT 消费端 App。
这点很重要。ChatGPT App 里可能还有系统提示词、产品路由、工具调用和其他策略层。不能把这次 API 测试直接说成“ChatGPT 的表现”。
实验设置很简单:固定提示词,只要求模型输出 1 到 100 的一个整数。样本量 N=10000,temperature=1.0。
| 项目 | 信息 |
|---|---|
| 测试对象 | OpenAI gpt-4.1 |
| 调用方式 | Responses API |
| 样本量 | 10000 次 |
| 温度 | temperature=1.0 |
| 任务 | 输出 1 到 100 的一个整数 |
| 统计检验 | χ²=15604,df=99,p≈0 |
| 含义 | 与均匀分布差异极大 |
如果是真正均匀随机,100 个数字每个大约应出现 100 次。实际不是。
37 和 42 的出现次数约为均匀预期的 4 倍。73 约为 3.4 倍。最高频的几个数字是 47、57、72、37、42。
整十数更反常。除 10 外,所有 10 的倍数出现 0 次;10 也只出现 1 次。
还有一个小刺点:69 没有像很多人类随机数测试里那样被高估,反而只有预期的 0.29 倍。项目作者猜测,这可能与安全过滤或后训练有关。
这个猜测合理,但还不能当结论。现在能确定的只是:在这组条件下,gpt-4.1 的输出分布严重不像均匀随机。
为什么重要:它暴露的是“采样人格”
人类本来就不擅长随机。
让人随口说一个 1 到 100 的随机数,很多人会避开 1、100、50 和整十数,转而选择看起来“不那么整”的数字。37、73 这类数容易被偏爱。42 还有《银河系漫游指南》的文化梗。
gpt-4.1 这次像什么?像一个读过大量人类回答、又被产品规范修剪过的人。
它不是在理解“随机”。它是在“请给我一个随机数”这个语言场景里,采样那些更像答案的 token。
“蓬生麻中,不扶而直。”环境会塑形。放到 LLM 上,就是语料会塑形,后训练也会塑形。模型输出不是凭空来的,它沿着过去的文本、偏好和规训流动。
所以我不太买账那种轻飘飘的嘲笑:你看,AI 连随机数都不会选。
这个嘲笑太浅。真正该警惕的是,很多人正在把 LLM 当成“通用不确定性机器”来用。
它的不确定性不是白噪声。它有纹理,有偏好,有产品痕迹。
这对两类人影响最大。
| 受影响对象 | 容易踩的坑 | 更稳的做法 |
|---|---|---|
| 开发者 / Agent 工程师 | 让模型自己选随机样本、随机分支、随机编号 | 用程序随机数生成器,再把结果交给模型解释或格式化 |
| AI 产品评测者 | 把模型多次输出当成独立、均匀、无偏的采样 | 记录提示词、温度、调用方式和分布,单独做统计检验 |
普通用户偶尔让模型“随便选一个数”,问题不大。错了也只是娱乐。
开发者不一样。只要这个“随机”进入评测、抽样、路由、A/B 流程或 Agent 决策,偏差就会变成系统行为。
别向说书人借骰子。说书人会给你一个像故事的答案,不会给你一个干净的随机源。
接下来该看哪些变量
这次实验不能外推太远。
不能说所有大模型都这样。不能说所有 OpenAI 模型都这样。也不能说换提示词、换温度、换上下文后仍然一样。
这组结果更像一个探针:它把 gpt-4.1 在特定调用条件下的分布偏差照了出来。
接下来最该看四个变量。
| 变量 | 为什么关键 |
|---|---|
| 提示词写法 | “随机选一个数”和“使用均匀分布选一个数”可能触发不同模式 |
| temperature | 温度变化会改变采样分布,但不等于自动变均匀 |
| 模型版本 | 不同模型、不同后训练策略,偏好峰值可能不同 |
| 69 这类敏感数字 | 若长期偏低,才更能支持“安全/后训练影响”的假设 |
我更在意最后一个。
42 这种“聪明梗”被继承,69 这种“粗俗梗”被压低。如果更多实验也出现类似模式,它说明模型偏差不只来自人类语料,也来自平台希望模型成为什么样的人。
后训练不是擦除偏差,而是重新分配偏差。
有些东西被放大,有些东西被压低。最后呈现出来的,不是中性的智能,而是一种产品人格。
这并不等于说后训练不好。安全、可控、稳定,都是产品必须付的账。问题在于,用户和开发者不能把这种被调教过的输出误认成自然分布。
骰子没有人格。LLM 有。
这就是这次随机数实验最短的结论。
