MiaAInow

抽卡 1% 抽 100 次,能中吗?

我让 AI 写程序找来 1 万个人,每人各抽 100 次:3,701 个人一金没出,最倒霉的那位抽到了第 988 抽。模拟器在下面,概率、抽数你自己填。

抽卡模拟器

填出金率和每人抽几次,点一下,1 万个人当场帮你抽。每次都是重新掷的骰子,结果会和视频里差一点点,但一金不出的比例总是贴着公式算出来的那个数。

下载 HTML 文件全屏打开 ↗

抽卡一万次模拟(原片)

视频开头那段竖屏动画,在浏览器里实时跑(没有声音)。每个数字都是模拟真跑出来的:网格里一格一个人,格子在他出金的那一抽亮起来。

全屏打开 ↗
抽卡一万次模拟 · 提示词
<role>
你是做数据动画的创意程序员。先用 Python 写一个真的模拟、跑出数据,再用一个 HTML 文件 + 原生 JavaScript + Canvas 2D
把数据画成一段 40 秒左右的竖屏动画(1080×1920),最后拍成 MP4。不用外部图片和库。
</role>

<data>
1. 模拟:1 万个人,每人每一抽都有 1% 出金,记下每个人「第几抽第一次出金」。固定随机种子(numpy default_rng(1)),
   每次跑结果一模一样。再给每个人一个 0–1 的小随机数,只决定同一抽里谁先亮(不影响结果)。
2. 结果写成 data.js(window.SIM = {...}):每个人的出金抽数、100 抽内出金的人数、最倒霉那个人是谁、第几抽。
3. 所有数字都从模拟结果里读,不许写死。画面上的字、片尾的数、音效的时刻,全部从 data.js 算出来。
</data>

<direction>
深色暖底、金色是出金。100×100 的网格,一格一个人,出金那一刻从白闪成金色。
钩子:大大的「1%」,「抽 100 次,稳了吧?」→ 网格从中间一圈圈亮起来 →「第 n 抽」大计数器开始跑,
前几抽慢、后面快 → 第 100 抽急停:多少人出金、多少人一金没出、占几成 → 没出金的接着抽,打出 90%、95%、99% 各在第几抽 →
随手挑一格叫「你」,标出你第几抽才出金 → 镜头推到最后一个人,「第 N 抽才出金」→ 一条「出金的人随抽数涨上去」的曲线做总结
→ 黑底收尾:「这 1 万次模拟,是 AI 写代码跑的」。
</direction>

<build>
- 页面暴露 window.render(t):画面只由 t 决定,帧与帧之间不存状态。
- 画面时间只决定「现在抽到第几抽」(一张 [秒, 第几抽] 的关键帧表,中间线性插值);哪一格该亮,查那张表:出金抽数 ≤ 现在第几抽就亮。
- 网格按实际像素一格一格填(ImageData),推近时关掉平滑,格子才是方的。
- 用 Playwright 逐帧调用 render(i / 30) 截图,ffmpeg 压成 MP4。
- 声音:每个人出金是一声「叮」,时刻和那一格亮起来是同一刻(同一份数据算);同一抽里人多时叠成一片,后面一声一声。
  背景音乐用 AI 生成的话,先测出它是什么调,把每一声叮挪到这个调的主音、二度、四度、五度上,免得打架。
</build>

<gotchas>
- 每改一版就自己截几张图检查,哪里不对就说哪里。
- 计数器显示「正在抽的这一抽」:第一抽格子已经在亮时,别还写「第 0 抽」。
- 「你」的标签往画面里面长,字一长就别往左边放。
- 推到最后满屏都是金格子,金色的字会看不见:推近以后把字后面的格子压暗。
- 中间要是太久没有大变化,在第 100 抽急停这种节拍点上加一下闪光。
</gotchas>