塔羅牌並不只是「隨機抽一張牌,再套用牌義」。
在數位環境中,更重要的是:
- 洗牌是否真正均勻?
- 隨機來源是否足夠安全?
- 解讀是否能依照不同主題提供合適的分析?
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