塔罗牌并不只是「随机抽一张牌,再套用牌义」。
在数位环境中,更重要的是:
- 洗牌是否真正均匀?
- 随机来源是否足够安全?
- 解读是否能依照不同主题提供合适的分析?
Quizzman Tarot Engine 是 Quizzman Lab 的 Rider–Waite–Smith(RWS)塔罗引擎,将 78 张牌标准化后,利用 Fisher–Yates(费雪-耶茨洗牌演算法) 配合 CSPRNG(密码学安全伪随机数产生器) 进行洗牌,再支援正位(Upright)与逆位(Reversed)抽牌,最后透过 NLP(Natural Language Processing,自然语言处理) 依不同主题(感情、事业、财务、健康、心灵)产生完整解读。
体验:
>
https://lab.quizzman.com/tarot
Quizzman Tarot 是什么?
Quizzman Tarot 主要由三个层次组成:
- Deck Data(牌组资料)
- 标准 Rider–Waite–Smith 78 张牌 - 包含 Major Arcana(大阿尔克那)与 Minor Arcana(小阿尔克那) - 每张牌附有关键字、元素、原型(Archetype,原型)、权重等资料
- Shuffle & Draw Engine(洗牌与抽牌引擎)
- 建立洗牌 Session(工作阶段) - 支援一张牌或三张牌抽取 - 支援 Upright(正位)与 Reversed(逆位)
- Interpret Layer(解读层)
- 依不同主题评分 - 分析牌与牌之间的关联 - 产生完整文章式解读,包括: - Overview(总览) - Story(故事) - Analysis(分析) - Advice(建议) - Timeline(时间趋势) - Yes / No(是/否)
不同于仅随机抽牌再套用固定模板的网站,Quizzman 将 公平抽牌 与 语意解读 完全分离。
Rider–Waite–Smith 牌组
Quizzman 采用经典 Rider–Waite–Smith(1909)。
其特色为:
- 22 张 Major Arcana(大阿尔克那)
- 从 The Fool(愚者)到 The World(世界)
- 56 张 Minor Arcana(小阿尔克那)
- Wands(权杖) - Cups(圣杯) - Swords(宝剑) - Pentacles(钱币) - 每一花色包含 Ace–10 与 Court Cards(宫廷牌)
原始资料来自开源资料集,再加入:
- 中文名称
- 主题解读
- probabilityWeight(机率权重)
最后编译为 cards.json 供 API 使用。
抽牌演算法
Fisher–Yates(费雪-耶茨洗牌演算法)
Fisher–Yates 是目前公认可产生均匀排列(Uniform Permutation,均匀排列)的标准演算法。
流程如下:
- 建立 78 张牌。
- 从最后一张开始。
- 在
[0,i]范围内随机选取一个位置。 - 交换两张牌。
- 完成整副牌洗牌。
之后即可抽取前 k 张牌。
每张牌再依设定机率决定:
- Upright(正位)
- Reversed(逆位)
预设逆位约 45%。
若乱数均匀,78!(78 阶乘)种排列皆具有相同机率。
CSPRNG(密码学安全伪随机数产生器)
许多网站仍使用:
Math.random()
它只是一般用途 PRNG(Pseudo Random Number Generator,伪随机数产生器),并非密码学安全来源。
Quizzman Tarot:
正式环境
使用:
- crypto.randomInt()
- 系统 Entropy(熵)
作为 CSPRNG。
测试模式
若指定 Seed(种子):
SHA-256
↓
Mulberry32
即可得到可重现的结果,方便:
- 测试
- QA(品质保证)
- Audit(稽核)
因此:
- 正式抽牌不可预测
- 测试抽牌可完全重现
正位/逆位
洗牌完成后,每张牌再决定方向:
- Upright(正位)
- Reversed(逆位)
UI 会播放翻牌动画,再将:
{
id,
orientation
}
送交 Interpret Engine。
系统架构
使用者
│
▼
Quizzman Lab Gateway
│
▼
Tarot Engine
│
▼
PostgreSQL
Gateway 提供:
- API Proxy(代理)
- 身分验证
- Guest ID
- Client Metadata(用户端资讯)
Tarot Engine 负责:
- 洗牌
- 抽牌
- NLP 解读
- 配额管理
PostgreSQL 储存:
- 抽牌纪录
- Guest Fingerprint(装置指纹)
主要元件
| 元件 | 功能 | |------|------| | Frontend | 抽牌、翻牌动画、显示解读 | | Gateway | API Proxy、身份资讯 | | Tarot Engine | 抽牌与 NLP 解读 | | PostgreSQL | 储存历史纪录 |
API
主要 API 包括:
POST /v1/deck/new
建立洗好的牌组
POST /v1/deck/:id/draw
抽牌
GET /v1/quota
查询剩余次数
POST /v1/interpret
根据牌组与主题产生解读
Lab 使用:
/api/tool-module/tarot
作为 Gateway。
使用配额
为避免滥用:
访客
- 一生一次
- 使用 Guest ID + Fingerprint(装置指纹)
免费会员
- 每日一次
- 采 Asia/HoChiMinh 时区
Pro 以上
- 每日三次以上
- 依方案而定
每次成功解读均会储存:
- 主题
- 抽到的牌
- Summary(摘要)
- Browser(浏览器)
- OS(作业系统)
- Device(装置)
UI 仅显示剩余次数,不公开电子邮件等资讯。
NLP 解读
Interpret Engine 并非单纯列出牌义。
流程包括:
- 载入每张牌的 Metadata(中继资料)
- 依主题评分
- 分析牌与牌之间的组合或冲突
- 生成完整文章,包括:
- Overview(总览)
- Story(故事)
- Individual Analysis(逐张分析)
- Advice(建议)
- Timeline(时间趋势)
- Yes/No
目前支援:
- 中文(繁体)
- English
- Tiếng Việt
在 Quizzman 生态中的角色
| 系统 | 关系 | |------|------| | Quizzman Lab | 提供 Tarot UI 与 API Gateway | | I-Ching Engine | 同属占卜引擎,但采不同 RNG 与规则 | | Quizzman ID | 管理会员与配额 |
Quizzman Tarot 不是什么?
它:
- 不取代心理咨询
- 不取代法律或医疗建议
- 不使用 LLM(大型语言模型)凭空生成牌义
- 正式环境不使用
Math.random() - 不是实体塔罗牌商城
它是一套具有结构化流程的 Tarot Engine(塔罗引擎)。
适用对象
适合:
- 想体验 Rider–Waite 线上抽牌的人
- 学习塔罗者
- 想了解正位/逆位差异的人
- 对 Fisher–Yates 与 CSPRNG 有兴趣的开发者
- Quizzman Pro 使用者
结论
Quizzman Tarot Engine 建立于三大核心之上:
- 标准化 Rider–Waite 78 张牌资料
- Fisher–Yates(费雪-耶茨洗牌演算法)+ CSPRNG(密码学安全伪随机数产生器)
- 依不同主题提供 NLP(自然语言处理)解读
每一次抽牌都可透过配额管理与历史纪录保持一致且可追踪,提供比一般随机抽牌网站更透明、更完整的使用体验。
立即体验:
https://lab.quizzman.com/tarot