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(牌组资料)
  2. - 标准 Rider–Waite–Smith 78 张牌

- 包含 Major Arcana(大阿尔克那)与 Minor Arcana(小阿尔克那)

- 每张牌附有关键字、元素、原型(Archetype,原型)、权重等资料

  1. Shuffle & Draw Engine(洗牌与抽牌引擎)
  2. - 建立洗牌 Session(工作阶段)

- 支援一张牌或三张牌抽取

- 支援 Upright(正位)与 Reversed(逆位)

  1. Interpret Layer(解读层)
  2. - 依不同主题评分

- 分析牌与牌之间的关联

- 产生完整文章式解读,包括:

- 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. 从最后一张开始。

  1. 在 [0,i] 范围内随机选取一个位置。
  2. 交换两张牌。
  3. 完成整副牌洗牌。

之后即可抽取前 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/Ho_Chi_Minh 时区

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