Quizzman Tarot Engine-采用 Fisher–Yates 与 CSPRNG 的 Rider–Waite 塔罗抽牌引擎

塔罗牌并不只是「随机抽一张牌,再套用牌义」。

在数位环境中,更重要的是:

  • 洗牌是否真正均匀?
  • 随机来源是否足够安全?
  • 解读是否能依照不同主题提供合适的分析?

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 主要由三个层次组成:

  1. Deck Data(牌组资料)

- 标准 Rider–Waite–Smith 78 张牌 - 包含 Major Arcana(大阿尔克那)与 Minor Arcana(小阿尔克那) - 每张牌附有关键字、元素、原型(Archetype,原型)、权重等资料

  1. Shuffle & Draw Engine(洗牌与抽牌引擎)

- 建立洗牌 Session(工作阶段) - 支援一张牌或三张牌抽取 - 支援 Upright(正位)与 Reversed(逆位)

  1. 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,均匀排列)的标准演算法。

流程如下:

  1. 建立 78 张牌。
  2. 从最后一张开始。
  3. [0,i] 范围内随机选取一个位置。
  4. 交换两张牌。
  5. 完成整副牌洗牌。

之后即可抽取前 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 并非单纯列出牌义。

流程包括:

  1. 载入每张牌的 Metadata(中继资料)
  2. 依主题评分
  3. 分析牌与牌之间的组合或冲突
  4. 生成完整文章,包括:
  • 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