s/g → 0:Valve 如何用数学饿死黄牛

s/g → 0:Valve 如何用数学饿死黄牛

Steam防黄牛算法Valve随机化

数据源:HN · HN

2026 年 6 月 23 日,Valve 的 Steam Machine 正式开售。起价 $1,049(512GB 版),顶配 2TB + Steam Controller 套装 $1,328。定价一出来,HN 上炸了锅——891 条评论,1010 分。但真正让技术社区兴奋的不是价格,不是硬件规格,甚至不是 LTT Labs 对那颗 “Newell Nucleus” SoC 的拆解。HN 上讨论密度最高的,是 Valve 那套防黄牛系统背后的数学逻辑。

Valve 没有用先到先得的秒杀,没有搞抽签,也没有要求用户上传身份证。它做了一件看起来「反效率」的事:把预约窗口拉长到两天半(6 月 23 日至 6 月 25 日上午 10 点 PT),然后在窗口关闭后对全部预约名单做一次性随机重排。同时配上三道硬门槛——Steam 账号需处于良好状态(good standing)、必须在 2026 年 4 月 27 日前有过至少一笔购买记录、每个家庭限购一台。被选中的用户会收到邮件,72 小时内完成付款,否则资格顺延。落选者进入等待队列,不散场。

这四件事分开看都不新鲜。合在一起,却构成了一套让 HN 用户 tmoertel 忍不住掏出公式来分析的机制。

随机化不是公平,是降维打击

黄牛的商业模式建立在两个确定性之上:需求远超供给,以及他们能比真实用户更快地到达交易终点。先到先得的秒杀系统(FCFS)是黄牛的完美猎场——脚本的响应速度是毫秒级的,人类的点击速度是秒级的,这个差距在任何有倒计时的页面上都会被放大成碾压。

随机化预约队列换了一个坐标系。它不再比谁快,而是比谁「真」。在 48 小时的预约窗口里,晚来的人和早来的人站在同一条起跑线上。窗口关闭后的一次性随机重排,把时间维度从竞争变量中踢了出去。

tmoertel 在 HN 上的分析把这层直觉翻译成了数学。在一个没有身份验证的先到先得系统里,黄牛的期望份额取决于他们能投放到队列中的账号数量与总需求的比值。假设总需求为 N,黄牛控制了 s 个具备资格的账号,真实玩家有 g 个账号,那么黄牛的期望获得份额大致为 s / (s + g)。当黄牛能通过批量注册无限放大 s 时,这个比率可以轻松越过 50%。

但 Valve 在随机化之外叠了第二层——账号信誉评分把这扇门焊死了。4 月 27 日这个截止日期是公开信息里最关键的数字。Valve 选择了一个 Steam Controller 开售前就划好的时间线,这意味着任何在 Steam Machine 消息公布后注册的账号都不具备预约资格。s 不能再通过注册新号来膨胀。

黄牛剩下的路是用存量账号——买来的黑号、租用的老号、囤积的休眠号。但这批账号面临两个问题。第一,数量远少于真实活跃用户。Steam 月活超过 1.3 亿,其中在 2026 年 4 月 27 日前有过消费的账号比例不低。黄牛手中符合「老号 + 有购买记录 + 良好状态」三重条件的账号数量 s,在真实玩家 g 面前是一个小量。s/g 趋近于零时,黄牛的实际获得份额也趋近于零。 第二,每个家庭限购一台的限制切断了黄牛把分散账号的购买集中出货的路径——即使你侥幸拿到了 10 个名额,10 个不同的收货地址本身就是一个足够高的物理门槛。

这就是为什么 tmoertel 的结论是「黄牛被系统性地排除」——系统设计让黄牛即使存在也难以在期望值上获利。能获利的前提是 s 足够大,而 s 被三层过滤(时间门槛、信誉门槛、家庭限额)压缩到了接近零。

五种方案的工程对比

把 Valve 这套机制放到防黄牛方案的光谱里,能更清楚地看到它选择了哪些取舍。

方案核心机制对黄牛的杀伤力对真实用户的代价代表案例
先到先得 (FCFS)按请求时间排序极低——脚本碾压人类用户需要蹲点、拼手速、被 bots 反复挫败PS5 首发、NVIDIA RTX 30 系列
纯抽签 (Lottery)随机选择中等——黄牛可以多号参与随机公平,但用户无控制感部分球鞋发售
实名制 + 人脸绑定真实身份高——多号困难隐私成本巨大,跨境适用性差中国部分抢购场景
邀请制 (Invite-only)厂商主动筛选用户高——厂商控制分配资格不透明,用户感到被傲慢对待Sony PS5 早期邀请、NVIDIA 优先计划
随机化预约 + 信誉分层时间窗随机重排 + 账号历史过滤高——s/g 趋近零需要老账号,新用户被排除Valve Steam Machine

表格里最关键的一列是「对真实用户的代价」。防黄牛从来不是一个只有技术维度的问题——每一种方案都在「排除黄牛」和「误伤真实用户」之间画了一条不同的边界。 先到先得的边界画在了「速度」上,结果是误伤每一个没写脚本的真实人。抽签把边界画在了「运气」上,误伤的是想通过努力获得确定性的用户。实名制把边界画在「隐私」上,误伤的是不愿交出生物特征的人。邀请制把边界画在「厂商偏好」上,误伤的是不被算法选中的沉默大多数。

Valve 的方案把边界画在了「账号历史」上。一个 Steam 用户如果从未在上面花过钱,或者账号是近期注册的,就可能被这道边界划在外面。 这不是一个完美的方案——2026 年 4 月 28 日才注册 Steam 的 PC 玩家不会因为这套逻辑鼓掌。但从工程角度看,这套方案做到了一件事:把误伤范围限制在了一个可定义、可预测、且与黄牛行为特征高负相关的群体上。新账号不一定是黄牛,但黄牛几乎一定用新账号。Valve 选择在「宁可错杀新用户」的方向上倾斜,是一个有意识的工程决策,而不是无心之失。

一个简化版的随机化分配模型

Valve 没有公开它的确切算法,但从公开信息可以反推出一个接近的骨架。以下是一个简化版 Python 实现,用以说明核心逻辑:

import random
from datetime import datetime, timedelta

CUTOFF_DATE = datetime(2026, 4, 27)
WINDOW_CLOSE = datetime(2026, 6, 25, 10, 0)  # 10am PT
MAX_PER_HOUSEHOLD = 1
AVAILABLE_UNITS = 50000  # Valve 未公布首批发货量


class Reservation:
    def __init__(self, steam_id, account_created, has_purchase_before_cutoff,
                 is_good_standing, household_id):
        self.steam_id = steam_id
        self.account_created = account_created
        self.has_purchase_before_cutoff = has_purchase_before_cutoff
        self.is_good_standing = is_good_standing
        self.household_id = household_id


def filter_eligible(reservations):
    """第一层:硬资格过滤。不符合条件的直接丢弃。"""
    eligible = []
    seen_households = set()

    for r in reservations:
        if not r.is_good_standing:
            continue
        if not r.has_purchase_before_cutoff:
            continue
        if r.household_id in seen_households:
            continue  # 每户一台

        seen_households.add(r.household_id)
        eligible.append(r)

    return eligible


def allocate(reservations, available_units):
    """第二层:随机重排后顺序分配。"""
    eligible = filter_eligible(reservations)

    # 一次性随机重排——整个窗口期的预约没有时间优先级
    random.shuffle(eligible)

    winners = eligible[:available_units]
    waitlist = eligible[available_units:]

    return winners, waitlist

这个骨架的工程直觉是:过滤层解决「谁有资格入场」的问题,随机层解决「在合格者中谁先拿到」的问题。 两层之间互不依赖,任何一层的参数都可以独立调整——截止日期可以前移或后推,随机化可以用加权随机替代(例如老账号权重更高),家庭限额可以改为物理地址匹配。模块化的结构让 Valve 在未来面临新的黄牛策略时不必推倒重来。

但这套模型有一个隐含假设:Valve 有能力区分「活跃玩家」和「休眠号」。Steam 的账号信誉评分是多维度的——购买历史、游戏时长、社区贡献(创意工坊、评测、指南)、账号年龄、是否有 VAC 封禁记录、支付方式的历史一致性。Valve 知道你的游戏库值多少钱,知道你上一次打开 Dota 2 是什么时候,也知道你的好友列表里有多少个超过三年的老友。 一个黄牛可以买一个有过购买记录的老号,但无法赋予它十年的游戏时长和 200 个好友。这些维度的组合构成了一条比「是否在截止日前消费过」更深的护城河。

为什么说这套方案「优雅」

HN 上对这套方案的赞美集中在「优雅」这个词上。这个词在工程语境里有特定含义:用最小的复杂度换取最大的杠杆。 Valve 没有发明新的密码学协议,没有部署零知识证明,没有引入链上身份验证。它用的全部是 Steam 平台已有的数据——购买记录、账号状态、家庭地址——以及一个随机数生成器。

四个机制叠加产生的效果大于各部分之和:

  1. 时间窗口消除脚本优势——你不需要比黄牛的 bot 更快,你只需要在 48 小时内随便什么时候点一下。
  2. 截止日期冻结账号供给——消息公布后黄牛无法扩充兵力,s 被锁死在预定值。
  3. 信誉评分排除无历史账号——s 的「有效供给」进一步被压缩到有真实使用痕迹的老号。
  4. 家庭限额切断集中出货——单个黄牛的 s 即使大于 1,也无法在同一物理地址兑现。

这四步构成了一条漏斗:从「所有想买的人」到「有资格买的人」到「被随机选中的人」再到「确实能收货的人」。每一步的漏出量都是对黄牛的不对称打击——对真实用户每步损失几个百分点,对黄牛每步损失一个数量级。

这种不对称性是 s/g 公式的精髓。如果黄牛的初始 s 只有真实玩家的 1/100,经过四层过滤后,最终拿到机器的比例可能低至 1/10000。而整套系统并没有要求任何一个真实用户做任何一件他们平时不在 Steam 上做的事。

局限与未决问题

从目前的公开信息看,这套方案并非没有短板。

第一,老号交易的灰色市场仍然存在。如果一个 Steam 账号有 5 年历史、有购买记录、且处于良好状态,它在黑市上的价格并不低,但也不足以让黄牛却步——只要单台 Steam Machine 的转手利润超过账号成本加机器成本,黄牛就有动力去收购老号。截止日期限制了新号的注入,但没有消灭存量老号的交易。这条防线的有效性部分取决于黑市老号的价格弹性,而这个数据 Valve 掌握,外界只能猜测。

第二,随机化预约与传统抽签在形式上接近,但在用户感知上却不同——因为 Valve 没有把它叫抽签。48 小时的预约窗口给了用户一种「我在排队」的错觉,即使这个队列在窗口关闭后会被随机重排。这种设计是否构成一种温和的心理操纵,值得讨论。一位 HN 用户直言:「这和抽签有什么区别?只是把签筒藏起来了。」但另一条回复指出了一个关键差异:抽签往往在瞬间完成,用户几秒后就知道结果;随机化预约把「参与感」拉长到了 48 小时,而参与感本身就消耗了一部分抢购焦虑。 从心理学角度,焦虑越少,用户对结果的接受度越高——即使结果本身同样是随机的。

第三,这套系统的成功高度依赖 Valve 对「良好状态」的定义不公开。如果黄牛知道信誉评分的精确权重,他们就可以针对性地培养账号。模糊的评分标准本身就是一道安全屏障。但这道屏障也有代价——被拒绝的用户不知道自己哪里不够好,无法改进。这和信用卡拒绝类似:算法说你不合格,但不会告诉你为什么。

第四,Steam Machine 面临的需求量级尚不确定。如果需求远大于供给——比如 500 万台预约对 5 万台现货——那么即使 s/g 趋近于零,仍然有 45 万真实玩家拿不到机器。他们会以二级市场的买家身份重新出现,而这恰恰是黄牛存在的根本前提。防黄牛系统阻止的是黄牛截胡分配环节,但无法消灭供需缺口本身。 只要缺口存在,二级市场就不会消失——唯一的区别是,这些机器是由「运气好的真实玩家」转卖的,还是由「被系统过滤掉的黄牛」转卖的。前一种情况至少黄牛没吃到第一层溢价。

其他厂商的答卷

Sony 在 PS5 首发时用的是典型 FCFS 加半吊子排队——用户在倒计时归零的瞬间涌入,页面崩溃,机器在三秒内显示缺货,eBay 上的加价幅度在 50% 到 200% 之间浮动。Sony 后来在 PlayStation Direct 上引入随机化队列,但缺乏账号历史的硬门槛,黄牛仍可通过多设备多账号参与。NVIDIA 的 RTX 30 系列是另一个灾难级案例——2020 到 2022 年间,矿潮和黄牛双重夹击下,一张 RTX 3080 的二级市场价格一度达到首发价的三倍。NVIDIA 尝试过邀请制(通过 GeForce Experience 筛选游戏时长较长的用户),但执行力度和覆盖面远不如 Valve 这次做得彻底。

Valve 的特殊优势在于它拥有一个 20 年积累的账号生态系统。 Sony 的 PSN 账号也有历史,但 PSN 的购买数据不如 Steam 密集——主机用户可能主要买实体盘。NVIDIA 有 GeForce Experience 但没有电商平台。Valve 是全球最大的 PC 游戏分发平台 + 硬件销售渠道的合体,这意味着它的「用户画像」不仅比竞品更厚,而且是交易级的——Steam 知道你花了多少钱、买了哪些游戏、在什么设备上玩、甚至游戏的退款频率。这套数据资产是 s/g 公式能够成立的根本前提。没有账号历史数据,随机化预约就只是一个更友善的抽签,失去了最关键的第二层过滤。

结语

Valve 在 Steam Machine 上的防黄牛方案,本质上是一次「把分配权还给时间——不是秒级抢购,是年级的账号积累」。黄牛擅长的是速率竞争——脚本的毫秒级响应、多线程并发、IP 池轮换。Valve 把比赛项目从「速率」换成了「历史」。一个在 Steam 上积累了数年行为的真实玩家不需要做任何额外努力,他本身就比黄牛的存量账号更值钱。

s/g → 0 是一个系统设计目标,而非数学恒等式。 截止日期、信誉评分、家庭限额、随机重排——这四个参数构成的控制面,让 Valve 可以在未来通过调节参数来应对黄牛的策略演化,而不是每次新品发布都从零开始设计一套新的抢购机制。对于一个计划持续发布硬件(Steam Frame VR 已在路上)的公司来说,这意味着防黄牛不再是每次发售的紧急公关,而是一个可迭代的工程子系统。

至于这套系统在实际中能把黄牛份额压到多低、误伤多少新用户、以及截止日期策略是否会在长期催生一个「养号」地下产业——这些问题的答案不会在发售首日揭晓。但至少在今天,Valve 给出了一个让 HN 技术社区愿意掏出草稿纸来推导数学模型的答案。这本身比大多数防黄牛方案的结局要好得多。