一个被群友刷屏的诡异发现
前几天刷到一个帖子,标题挺唬人:为啥让各种 AI 生成一个 1-30 的随机数,都回答 17。楼主说他找群友一个个验证,DeepSeek、豆包、Qwen 发过来的图,除了极个别在思考过程里自己写了段随机代码的,剩下几乎清一色都是 17。
后面跟帖的人越来越多,gemini、gpt 也被拖下水,有人连问三趟每趟三次,全是 17。
说真的,我第一眼也觉得细思恐极。但冷静下来想,这事一点都不玄,反而是个很多人天天在踩、却没意识到的坑。
我自己就踩过。之前想给一个小社群做个抽奖的东西,图省事,直接在提示词里写“从这 200 个报名 ID 里随机抽 5 个中奖”,让模型给我结果。
跑了几次,看着挺像那么回事,我就信了。后来复盘才发现不对劲——同一批名单,它抽出来的人重合度高得离谱,某几个 ID 反复出现。
那一刻我才意识到,模型根本没在“随机”,它在按自己的偏好复读。
你以为它在掷骰子,其实它在背课文
帖子里有个哥们的分析我觉得特别到位。大意是说,大语言模型不是真随机,它是拿海量人类语料训练出来的,输出会趋同。
你让它给个“看起来随机”的数,1 到 9 它觉得太土,合数一眼就能看出规律,于是它下意识往 10-30 之间的素数上凑——13、17、19、23。其中 13 太常见,29 又太偏,剩下最“有随机感”的就是 17、19、23 这几个。
换句话说,模型不是在生成随机数,它是在回答“人类觉得哪个数字最像随机数”。这两件事完全不是一回事。
还有个更直接的证据。有人问 gemini,它老实交代:我根本没执行 python 脚本,是直接脑补了一个示例输出 17,因为我没配置代码执行的沙盒环境。
你看,它自己都承认了——没有真正跑代码的时候,它给的只是一个“猜的结果”。
这就是关键区别。帖子里凡是让模型真的去跑一段 `RANDOM % 30 + 1` 之类代码的,结果就正常了,有人跑出 20,有人跑出别的。
一旦真随机这步交给了程序,17 的魔咒立刻破解。
这个坑怎么坑到线上
这时候有人可能会说,不就是个数字游戏嘛,聊天玩玩而已。但对做产品的人来说,这事的杀伤力被严重低估了。
同一个帖子里,有位网友说了句让我心里一紧的话:他最近不参加论坛那两个每周抽奖的券商帖子了,因为他发现那些人是用 AI 来抽奖的。你品品这个场景——真金白银的抽奖,中奖名单是让模型“随机”出来的,而模型的随机是有强烈偏好的。
这意味着什么?意味着某些位置、某些特征的参与者,中奖概率天生就比别人高,而运营方自己可能压根不知道。
往大了说,凡是涉及随机的业务逻辑,都有这个雷:抽奖分配奖品、把用户随机分到 A/B 两组做实验、给题库打乱出题顺序、给客服随机派单。你只要图省事让模型“帮我随机安排一下”,它就会带着偏见给你结果,而且表面上看不出问题。
等到有用户较真、或者数据一统计发现分布明显歪了,那就是线上事故了。
更麻烦的是这种 bug 很隐蔽。它不报错,不崩溃,跑出来的东西看着都对,只是统计上偏了。
这种问题最难查。
正确姿势:让模型写代码,别让模型当骰子
那怎么办?其实答案帖子里已经给出来了——需要真随机的时候,让 AI 去写调用随机函数的代码,然后把执行这步交回给程序。
分工要拎清楚。模型擅长的是理解你的需求、把逻辑翻译成代码,比如“从名单里不重复抽 5 个”“把这批数据随机分成对照组和实验组”,这些它写得又快又对。
但真正生成随机数、执行抽取这一步,必须落到代码运行环境里,用语言自带的随机库去做。这一步千万别留在对话里让模型脑补。
落到实际操作,我现在的习惯是这样:先让 AI 帮我把抽奖或分配的逻辑写成一段 Python,然后找个能直接执行的地方跑,而不是看模型嘴上说结果。像 VicroCode 的Python在线运行就够用,把 `random` 那段贴进去直接出真结果,不用在本地折腾环境。
跑通之后别急着上线,先做一件事——验证分布。这一步是我踩坑之后加上的。
做法很简单,把抽取逻辑循环跑个几万次,统计每个数字、每个位置出现的次数,看看是不是大致均匀。你直接在线跑这段代码统计一下频次就能看出来:如果是真随机,各个数字的次数应该差不多;要是某个值明显冒尖,那说明你的逻辑里还藏着偏差。
这一步花不了几分钟,但能帮你在上线前拦下大问题。
从一段脚本到一个能分享的小工具
验证完分布,逻辑确认没问题,接下来就是把它变成别人也能用的东西。
很多独立开发者做的抽奖、分配、随机点名这类需求,本质就是一段可靠的随机逻辑加一个简单的界面。你完全可以把跑通的 Python 逻辑收成一个在线的在线工具,托管出来,发个链接给社群运营用,让他们自己上传名单、点一下出结果。
这样随机这步始终跑在真代码里,谁来用都是公平的,你也不用每次手动跑脚本。
这里其实藏着个小小的商业机会。市面上大量运营者、小团队都有抽奖分配的需求,但他们不懂技术,只能要么手动摇号,要么图省事让 AI 口算——而后者正如我们前面聊的,是有暗坑的。
如果你能把一个“分布经过验证、结果可复现、还能导出中奖名单”的小工具做出来,对这批人就是实打实的价值。收不收费另说,至少这是个能持续帮到人的东西。
(具体能带来多少用户或收益,这个得看你自己怎么运营,我没数据,标个待核实。
一个今天就能做的小验证
如果你手上正好有涉及随机的功能,别急着信任何模型嘴上给的结果。花五分钟做个实验:让 AI 写一段生成随机数或随机抽取的代码,跑一万次,把结果画个频次统计出来。
看看分布均不均匀。
如果均匀,恭喜,你的随机是靠代码在跑的。如果某个数字特别扎眼,那你大概率也中了 17 的招——回去检查一下,是不是哪个环节偷懒把随机交给模型脑补了。
记住那句话就够了:模型负责写逻辑,代码负责掷骰子。别让它俩换岗。