30 道题背后的数据结构

SBTI 的测试界面看起来很简单——30 道题,每道 3 个选项,点点点就完事了。但在你点"下一题"的那几秒钟里,后台已经在悄悄搭建一个关于你的心理模型了。

首先要明白一个核心结构:这 30 道题不是随机排列的。它们被精确分配到 15 个心理维度上,每个维度恰好 2 道题。维度编号从 S1 开始,到 So3 结束,按自我(S1-S3)、情感(E1-E3)、态度(A1-A3)、行动(Ac1-Ac3)、社交(So1-So3)的顺序排列。第 1-2 题对应 S1(自尊稳定性),第 3-4 题对应 S2(自我清晰度),第 5-6 题对应 S3(价值锚定),以此类推。

每道题的三个选项分别对应 1 分、2 分、3 分。但这里有一个容易被忽略的细节:并不是所有题目的选项都是正序排列的。比如 A1(世界观)的第二道题和 So2(人际边界)的第一道题,选项的分值是反过来的——第一个选项是 3 分,最后一个选项是 1 分。这种反转设计是为了防止你机械地"全选第一个"或者"全选最后一个"来操纵结果。

30 道题做完,系统手里有了 30 个分值。接下来就是把它们按维度加总——每个维度的 2 道题分数相加,得到该维度的原始分数。由于每道题 1-3 分,2 道题加起来的范围就是 2 到 6 分。这 15 个原始分数,就是你整个测试结果的基础数据。


从分数到等级:三档归类

原始分数拿到手之后,下一步是把它们归档。这个归档逻辑简单到令人意外:

  • 2-3 分 → L(Low,低)
  • 4 分 → M(Medium,中)
  • 5-6 分 → H(High,高)

注意看这个分布:L 覆盖 2 分和 3 分两个值,H 覆盖 5 分和 6 分两个值,而 M 只对应 4 分这一个值。这意味着拿到 M 的概率是最低的——你的两道题必须恰好是 1+3 或 2+2 的组合。从统计角度看,如果你随机作答,得到 L 和 H 的概率各约 33%,得到 M 的概率约 33%,但实际上由于人的答题倾向性,M 出现的频率会更低。

这个设计选择很有意思。它说明 SBTI 有意避免了"中庸陷阱"——不让大多数人都落在中间地带,而是把你往两头推。你在某个维度上大概率是偏高或偏低的,而不是不高不低。这让最终的人格画像更鲜明、更有"性格",也更适合做成截图发朋友圈。

假设你在 S1(自尊稳定性)维度的两道题分别选了 2 分和 3 分,加起来 5 分,归入 H。在 E2(情感投入度)维度选了 1 分和 2 分,加起来 3 分,归入 L。15 个维度都做完归档,你就得到了一个 15 位的字母串。按五组维度用短横线隔开,看起来像这样:HMH-LML-HHM-LMH-HML。这串字母就是你的"人格 DNA"——SBTI 所有后续计算的输入。


模式匹配:你的 DNA 对比 25 种标准模板

拿到你的人格 DNA 之后,系统要做的事情是:把它和 25 种常规人格类型的标准 DNA 逐一比较,找出最像你的那个。

每种常规类型都有一个预定义的 15 位模式字符串。比如 CTRL(拿捏者)的标准模式是 HHH-HMH-MHH-HHH-MHM,DEAD(死者)的标准模式是 LLL-LLM-LML-LLL-LHM。你可以直观地看出区别:CTRL 几乎全是 H(高),而 DEAD 几乎全是 L(低)——一个是什么维度都拉满的控制达人,一个是什么维度都摆烂的行尸走肉。

比较的方法用的是曼哈顿距离(Manhattan Distance)。先把 L/M/H 映射成数字:L=1,M=2,H=3。然后把你的 15 维度数字串和标准类型的 15 维度数字串逐位相减,取绝对值,再加总。

举个具体例子。假设你的模式是 HHL-MHH-MLH-HHM-HLH,翻译成数字就是 3,3,1-2,3,3-2,1,3-3,3,2-3,1,3。拿它和 CTRL 的标准模式 HHH-HMH-MHH-HHH-MHM(即 3,3,3-3,2,3-2,3,3-3,3,3-2,3,2)比较:

逐位差异:|3-3|=0, |3-3|=0, |1-3|=2, |2-3|=1, |3-2|=1, |3-3|=0, |2-2|=0, |1-3|=2, |3-3|=0, |3-3|=0, |3-3|=0, |2-3|=1, |3-2|=1, |1-3|=2, |3-2|=1

总距离 = 0+0+2+1+1+0+0+2+0+0+0+1+1+2+1 = 11

然后转换成相似度max(0, round((1 - 11/30) × 100))% = 63%。距离越小,相似度越高。理论最大距离是 30(15 个维度每个差 2),所以除以 30 做归一化。


排名、兜底和那瓶酒

系统对所有 25 种常规类型都做完上面的计算之后,按距离从小到大排序——距离最小的类型就是你的最佳匹配。如果两个类型距离相同,会进一步比较"精确匹配维度数"(即完全一致的维度有几个),匹配越多的排前面。

但在宣布结果之前,还有两道闸门

第一道闸门是相似度门槛。如果你的最佳匹配相似度低于 60%——也就是说你和最像你的那个类型都只有不到六成像——系统会判定"现有模板装不下你",直接把你归入 HHHH(傻乐者)。这是一个工程上的"兜底"设计:确保再怎么奇葩的答题模式都能得到一个结果,而不是一个报错页面。

第二道闸门在时间线上其实更早:DRUNK 检查。30 道正式题答完之后,系统会弹出关于饮酒的补充题。如果你触发了"酒鬼路径"——具体来说,先通过一道 4 选 1 的门控题,再通过一道 2 选 1 的确认题——系统会完全跳过上面所有的模式匹配流程,直接给你 DRUNK。你之前认认真真答的 30 道题?全白费了。这就是 SBTI 最初作为"劝酒工具"留下来的彩蛋。

所以完整的结果判定流程是:先查 DRUNK → 如果没触发,做模式匹配 → 最佳匹配 ≥ 60% 就用它 → 低于 60% 就给 HHHH。整个流程在代码里只有几十行,但生成了数千万用户的人格标签。


结果编码:16 个数字的分享密码

测试结果出来之后,还有最后一步:把它编码成可分享的格式

SBTI 的分享链接里藏了一个 16 位的纯数字字符串。前 15 位是你在 15 个维度上的原始分数(每个维度一位数字,范围 2-6),最后 1 位是 DRUNK 标记(0 或 1)。比如字符串 5342364553423420 表示:S1=5, S2=3, S3=4, E1=2, E2=3, E3=6, A1=4, A2=5, A3=5, Ac1=3, Ac2=4, Ac3=2, So1=3, So2=4, So3=2,DRUNK=0。

这个编码被嵌入分享链接的 ?result= 参数中。朋友打开链接后,系统直接从这 16 位数字反推出完整的维度得分和匹配结果——不需要重新答题就能看到你的结果。这就是为什么 SBTI 的分享链接体验那么丝滑:点开就能看,看完可以直接拿自己的结果来做 CP 匹配。

这种编码方式也意味着一件事:你的分享链接里包含了你所有 15 个维度的原始分数。懂技术的人可以直接从链接里读出你的完整心理画像,甚至拿你的分数去手动计算你和其他类型的匹配度。某种意义上,这个 16 位数字比你的类型名字承载了更多信息——它是一张完整的心理快照,只是被压缩成了一串不起眼的数字。


为什么了解算法很重要

有人会问:了解这些算法细节有什么用?我就想测个类型发个朋友圈啊。

了解算法的价值不在于让你"玩得更好",而在于帮你正确理解结果的含义和局限

知道了每个维度只有 2 道题,你就明白为什么重测结果会变——一道题改一个选项,维度分数就可能从 H 变成 M 甚至 L,整个匹配结果随之翻转。知道了曼哈顿距离的计算方式,你就理解了"73% 匹配"和"95% 匹配"的区别到底有多大——前者意味着 15 个维度里有好几个和标准模式不一样,后者几乎是完美吻合。

知道了 HHHH 的 60% 门槛,你也就明白为什么这个类型那么稀有——25 种标准模式已经覆盖了绝大多数的维度组合空间,你得非常"非标"才能落到所有模板的盲区里。

SBTI 的算法不复杂,但它足够优雅。用最少的数据(30 个选择)构建出一个有 15 个维度的心理画像,再用最简单的距离计算把它匹配到一个有梗、有画面感、让人忍不住截图的标签上。整个系统从输入到输出,都是为"让你有东西可以分享"这一个目标设计的