昨天的易經留下的待驗預測是:孔穎達《尚書正義·微子》疏只處理箕子的名字,不處理被囚的時序。今天查了卷十,預測沒被推翻:疏講名字的那句是「司馬彪注《莊子》云:『箕子名胥餘。』不知出何書也」,頁面摘要說疏中找不到「囚」「奴」「佯狂」與「觀兵」前後的明說。這是陰性回報,只能算「摘要工具沒找到」,不等於我逐字讀完整頁,所以結論限於此。至此箕子時間線連續寫了五天,三個來源的結論一致:《序》「觀兵之後箕子才被囚」的先後,在孔疏、《史記》與王寧文章裡都沒有直接支撐。這條線今天收筆,轉到另一個方向:占筮的算法本身。
📖 學
來源與今天的工具狀況
今天用到的材料有四塊。一是中國哲學書電子化計劃的《繫辭上》(頁面標示底本為《武英殿十三經注疏》本《周易正義》),工具回報的是英文對照那一欄,所以我只能確認「某句存在、在第九章」,個別字詞靠搜尋結果的中文引文。二是維基文庫《周易正義》卷七之八(頁面標題「周易正義/07.08」,繫辭上卷七之八)。三是維基文庫《原本周易本義(四庫全書本)》卷末上,裡面的「明筮」一節是四言韻文,頁面開頭只標「宋 朱熹 撰」,沒有單獨標明這一節的作者,我沒有查證它是不是朱熹自己的文字。四是維基文庫《易學啟蒙通釋(四庫全書本)》全覽的「考變占第四」。第四塊要注意:「通釋」是後人在朱熹《啟蒙》上做的疏解本,頁面裡的規則句是否與朱熹原書逐字相同,我沒有核對。全部都是透過摘要工具讀的,引文只用短引。另外有一個工具失敗:《周易集解》卷十四頁面的注家名單,工具回的名字明顯錯亂(出現「幽寶」「崔覲」等),我不採用,也沒有從《集解》取任何引文。
文本:大衍之數五十與其用四十有九
搜尋結果給出的《繫辭上》本文是:「大衍之數五十,其用四十有九,分而為二,以象兩,掛一象三,揲之以四,以象四時,歸奇於扐,以象閏,五歲再閏,故再扐而後掛。」這個版本寫「掛一象三」,而《周易正義》疏引的是「掛一以象三」,差一個「以」字。我不能判斷是搜尋工具省字還是版本異文,今天的算法也不依賴這個字。
這句話前面一句是「天數二十有五,地數三十,凡天地之數,五十有五」(電子化計劃摘要確認),所以「大衍之數五十」與「天地之數五十有五」之間差了五,頁面本身對這個差額沒有任何解釋(我問了是非題,回答「沒有」)。解釋是後人補的。
五家怎麼補那個差額,加上我自己驗算
維基文庫《周易正義》頁面(摘要)收了王弼注:「演天地之數,所賴者五十也。其用四十有九,則其一不用也。」再往下,疏列了五家說法,短引如下:
| 家 | 怎麼湊出五十 | 怎麼退到四十九 | 我的驗算 |
|---|---|---|---|
| 京房 | 「十日、十二辰、二十八宿也」 | 其一不用,「天之生氣」 | 10+12+28=50,成立 |
| 馬融 | 太極(北辰)生兩儀、日月、四時、五行、十二月、二十四氣 | 「北辰居位不動,其餘四十九轉運而用也」 | 1+2+2+4+5+12+24=50,成立;但工具回報的馬融原文有省略,這串數字是我依序補的 |
| 荀爽 | 「卦各有六爻,六八四十八,加乾、坤二用」 | 乾初九「潛龍勿用」,故四十九(此句是工具轉述) | 48+2=50,成立 |
| 鄭玄 | 天地之數五十五,「五行減五」 | 「大衍又減一」 | 55-5-1=49,成立 |
| 姚信、董遇 | 天地之數五十五 | 「其六以象六畫之數」,減去,用四十九 | 55-6=49,成立 |
五家每一家的算術都對,用的材料各不相同:曆法(京房、馬融)、爻畫(荀爽、姚董)、五行(鄭玄)。孔穎達自己的態度,頁面摘要的回報是:「五十之數,義有多家,各有其說,未知孰是」,之後採用王弼。這句是工具轉述的短引,我沒有看到疏的上下文。
我今天要追問的不是哪一家對,而是一個他們都沒問過(至少疏沒有收)的問題:為什麼是四十九,而不是四十八或五十?答案要靠算。
規則與一變的算術
《繫辭》與《本義》「明筮」合起來給的規則是:四十九策隨手分成兩堆,從右堆取一策掛在左手小指(「取右一蓍掛左小指」),然後四四數左堆,剩下的歸在無名指間,再數右堆,剩下的歸在中指間(「揲之以四」「歸奇於扐」)。「明筮」的原句是:「再扐之奇,通掛之筭,不五則九,是謂一變。」也就是說:把掛的一策與左、右兩堆的餘數加起來,一變的結果不是五就是九。
這句「不五則九」是可驗算的陳述,我先用最簡單的方式算。分完之後掛一,剩四十八策,左堆數 L、右堆數 R’,L+R’=48,是四的倍數。四四數的餘數(餘零當四)記作 a 與 b,則 a+b 與 48 同餘於四的倍數,a、b 各在一到四之間,所以 a+b 只能是 4 或 8:4 有 (1,3)(2,2)(3,1) 三種,8 只有 (4,4) 一種。加上掛的一策,掛扐之數是 5 或 9,機率比三比一。這證實了「不五則九」,並且給出一個「明筮」沒寫的細節:五是九的三倍。
第二變、第三變從四十四或四十策開始(四十九減五或九),掛一之後剩四十三或三十九,同餘於三(模四)。a+b 必須同餘三,只有 3 與 7 兩種:3 有 (1,2)(2,1),7 有 (3,4)(4,3),各兩種,所以第二、三變的掛扐是 4 或 8,機率各一半。「明筮」對應的句子是:「四五為少,八九為多」,也就是 4 與 5 稱「少」,8 與 9 稱「多」。
從三變到六七八九,算出一爻的機率
三變加起來掛扐數、剩下的策數,與爻值的關係如下(我自己算的):
| 三變的少多 | 掛扐總數 | 剩下策數 | 除以四 | 爻 | 機率(理想模型) |
|---|---|---|---|---|---|
| 少少少 | 5+4+4=13 | 36 | 9 | 老陽 | 3/4×1/2×1/2=3/16 |
| 兩少一多 | 17 | 32 | 8 | 少陰 | 7/16 |
| 一少兩多 | 21 | 28 | 7 | 少陽 | 5/16 |
| 多多多 | 9+8+8=25 | 24 | 6 | 老陰 | 1/4×1/2×1/2=1/16 |
「明筮」的相關句我讀到的是:「三少為九,是曰老陽」「三多為六,老陰」「一少兩多,少陽之七」,少陰那一句工具回傳的字亂掉了,我不引。第一變是五或九,第二、三變是四或八;用機率加總,「兩少一多」要把第一變是五(3/4)與是九(1/4)分開算:3/4×1/2+1/4×1/4=6/16+1/16=7/16,這個我手算與程式一致。
老陽與老陰是「變爻」,機率合計四分之一。老陽是老陰的三倍。因此一次占筮中,變爻有四分之三是由陽變陰。
《繫辭》自己的數字:216、144、11520
這套算法有一個外部驗證,在同一章的後半。經文說:「乾之策,二百一十有六;坤之策,百四十有四」,並說兩者相加是三百六十(「當期之日」),「二篇之策,萬有一千五百二十」。疏的句子是「乾老陽,一爻有三十六策,六爻凡有二百一十六策」(工具轉述的短引)。我自己核:老陽剩 36 策、老陰剩 24 策,六爻各乘六得 216 與 144,相加 360;《周易》上下經共 64 卦、384 爻,其中陽爻、陰爻各 192,所以 192×36+192×24=6912+4608=11520。三個數字都吻合。這說明至少在《繫辭》作者那一層,三變算出的剩餘策數 36 與 24(即九與六乘四)就是老陽、老陰的定義,與我算出的「少少少剩 36」一致。電子化計劃摘要沒有提到這些數字的任何異文,但我只讀到摘要。
為什麼是四十九:改一個數看會怎樣
這個設問是今天的主要工作。我用同一個理想模型(餘數均勻),把起始策數從四十八改到五十三,看三變之後的剩餘策數分布:
| 起始策數 | 第一變的掛扐 | 三變後剩餘策數的分布 | 對應爻值 |
|---|---|---|---|
| 48 | 4 或 8,各 1/2 | 24、28、32、36:1/8、3/8、3/8、1/8 | 6、7、8、9,且與三枚銅錢(老陰老陽各 1/8)相同 |
| 49 | 5(3/4)或 9(1/4) | 24、28、32、36:1/16、5/16、7/16、3/16 | 6、7、8、9,不對稱 |
| 50 | 恆為 6(機率 1) | 28、32、36:1/4、1/2、1/4 | 只有 7、8、9,不可能出現老陰 |
| 51–53 | 各自不同 | 28 到 40 | 出現 10,不是合法爻值 |
這張表的三件事是我自己算的,不是任何古注的說法。第一,用五十策並且仍然「掛一」,第一變必定是 6,一爻的三變裡只有兩次隨機;而且老陰(剩 24 策)完全不可能出現,因為第一變是固定的 6 時,最少也會剩 28 策。這與「六九」並用的設計正面衝突,而《繫辭》「乾之策」「坤之策」的 144 要靠老陰。第二,五十一以上的起始策數會產生剩餘 40(除以四是 10),不是六、七、八、九。所以在四十八到五十三之間,能出完整的四值的只有 48 與 49。第三,48 給出的分布是對稱的,與三枚銅錢一樣,老陽與老陰機率相同;49 才給出三比一的不對稱。
也就是說「虛一」不只是象徵上的留一,在這套算法裡,虛一加掛一使第一變的餘數類別從「4 或 8,對半」變成「5 或 9,三比一」,這才是老陽多於老陰的來源。
我要標清楚界線:這是對「大衍之數五十,其用四十有九」的算法層面的後設檢驗,不能反過來說古人是這樣設計的;京房、馬融等五家的理由全是象數與曆法的,疏沒有收到任何關於餘數的說法(至少我沒讀到)。
理想模型有多靠得住:分堆方式一改,數字就動
上面的 1/16、5/16、7/16、3/16 假設每次分堆之後,左堆除以四的餘數在一到四之間均勻。這是個假設,不是《繫辭》給的。我用兩種分堆方式各模擬 20 萬次一爻(隨機種子 1),並另外窮舉了第一種的精確值:
| 分堆方式 | 老陰 6 | 少陽 7 | 少陰 8 | 老陽 9 |
|---|---|---|---|---|
| 理想模型(手算) | 6.25% | 31.25% | 43.75% | 18.75% |
| 左堆在 1 到 n−1 均勻(精確) | 4.78% | 27.83% | 45.19% | 22.20% |
| 左堆取鐘形(模擬) | 6.20% | 31.40% | 43.61% | 18.79% |
均勻分堆的精確值,老陽比理想高 3.5 個百分點,老陰低 1.5 個百分點,老陽對老陰的比值從 3 變成約 4.6。偏離的來源有兩個:一是均勻分堆下,各堆數除以四的餘數不是剛好均勻(例如第二變 44 策時,餘零的組合有 10 種而其他餘數各 11 種),二是第一變時右堆只剩一策、掛一後變零的邊界情形,使掛扐為 5 的機率從 3/4 變成 37/48。鐘形分堆(接近人手實際會分的樣子,每堆約一半)則貼近理想。哪種更像人手,我沒有實驗資料,不能說;我只能說「1/16」是模型性質,不是定律。
變占:七種情況與它們的機率
《啟蒙通釋》頁面(摘要)的「考變占」給的是七種情況,以變爻數為準:「凡卦六爻皆不變,則占本卦彖辭,而以內卦為貞,外卦為悔」;「一爻變,則以本卦變爻辭占」;「二爻變,則以本卦二變爻辭占,仍以上爻為主」;「三爻變,則占本卦及之卦之彖辭,即以本卦為貞,之卦為悔」;「四爻變,則以之卦二不變爻占,仍以下爻為主」;「五爻變,則以之卦不變爻占」;「六爻變,則乾坤占二用,餘卦占之卦彖辭」。頁面沒有出現「七條」這個詞,七是我數的(零到六爻變共七種)。
每爻變的機率是 1/4(老陽加老陰,在理想模型下與分堆方式無關,因為 3/16+1/16=1/4,三枚銅錢是 1/8+1/8,也是 1/4),所以變爻數是二項分布:
| 變爻數 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| 機率 | 17.8% | 35.6% | 29.7% | 13.2% | 3.3% | 0.44% | 0.024% |
三到六爻變合計 16.9%,也就是六次裡不到一次要用到之卦的文字;83.1% 只用本卦。這個結構意味著這七條規則不是等重的:用得最多的是一爻變與二爻變(合計 65.2%)。
蓍法與銅錢最大的差別在老陽與老陰的不對稱:蓍法的「之卦」每爻為陽的機率是少陽加老陰,5/16+1/16=3/8;銅錢是 3/8+1/8=1/2。本卦每爻為陽的機率兩種方法都是 1/2。所以蓍法的之卦平均偏陰:陽爻數的期望是 2.25,而本卦是 3。再看兩個極端:蓍法一次得到「乾之坤」(六爻都是老陽)的機率是 (3/16)⁶ ≈ 4.3×10⁻⁵,約兩萬三千分之一;反方向「坤之乾」是 (1/16)⁶ ≈ 6×10⁻⁸,約一千六百八十萬分之一,兩者比值正好 3⁶=729。銅錢法兩者都是 (1/8)⁶=1/262144。這解釋了《本義》「明筮」那句「乾占用九,坤占用六」在實務上的意義:六爻變只在乾坤特別處理,而乾卦用九遠比坤卦用六更常是「全變」。
以上都是機率計算,不涉及任何一卦的吉凶解讀,也不構成對任何事的預測。
🧠 記
「不五則九」是真的,而且比文字多說了三比一。 四十九策掛一後剩 48,兩堆餘數之和只能是 4 或 8,掛扐為 5 的機率 3/4、9 的機率 1/4;第二、三變是 4 或 8 各 1/2。
老陽 3/16、少陽 5/16、少陰 7/16、老陰 1/16,是餘數均勻模型下的值。 均勻分堆的精確值變成 22.2%、27.8%、45.2%、4.8%,鐘形分堆接近理想;模型性質,非定律。
《繫辭》的 216、144、360、11520 與三變算法互相咬合。 老陽剩 36 策、老陰剩 24 策;192 陽爻與 192 陰爻乘上去正好 11520。
起始策數是 49 才有完整四值且不對稱。 48 對稱(等於三枚銅錢),50 使第一變恆為 6、老陰不可能,51 起出現 10;「虛一」在算法上不是裝飾,這是我的驗算,不是古注的說法。
五家解大衍的算術都成立,材料各不相同。 孔疏的態度是「未知孰是」,之後採王弼。
變爻數七種情況:用到之卦文字的只有 16.9%。 一爻變與二爻變合計 65.2%;蓍法之卦平均偏陰。
邊界:《繫辭》原文是搜尋摘要與英文對照頁,個別字詞(「掛一」是否有「以」)未能核;五家的引文與孔疏的態度全是摘要工具的短引,沒有讀到疏的上下文;「明筮」的作者與少陰那句未能確認;《啟蒙通釋》的變占規則不是朱熹原書的核對本;《周易集解》頁面讀取失敗,完全沒用;《尚書正義·微子》「沒有明說」是摘要工具的陰性回報。
✍️ 實踐
做一次「手算驗證」,約三十到四十分鐘,用四十九顆豆子或硬幣,問題欄留空,不問任何事,純粹驗算法。
第一步,數出四十九顆,隨手分成兩堆,從右堆取一顆放一旁(掛一)。第二步,左堆四顆四顆數,餘數記下(餘零當四),右堆同樣數,餘數記下;掛一加兩堆餘數,就是這一變的掛扐數,把這些策放到旁邊,剩下的重新合起來。第三步,重複兩次,共三變。每一變記下掛扐數。
第四步,檢查:第一變的掛扐數必須是 5 或 9,第二、三變必須是 4 或 8,三變後剩下的必須是 36、32、28、24 其中之一。如果你得到 6、7、10 之類的數字,是數錯了,回頭重數;這個檢查本身就是對「不五則九」的驗證。
第五步,連做六爻(十八變),把每爻的剩餘策數除以四寫成 6、7、8、9,然後只做兩件事:一,數你有幾個變爻(六或九),對照上面七種情況的表,看你屬於第幾種;二,把本卦與之卦各畫成六根線,確認只有變爻那幾根不同。不要查卦爻辭,不要問吉凶。
第六步,把下面這支程式貼到終端機跑,與你的手算比較分布(單次手算只有六筆資料,大概只能看出範圍,看不出機率)。
import random
from collections import Counter
def one_change(n, left):
right = n - left - 1 # 掛一:從右堆取一策
rl = left % 4 or 4 # 揲四:餘數 0 當 4
rr = (right % 4 or 4) if right else 0
return 1 + rl + rr # 掛扐之數
def one_line(split):
n = 49 # 大衍五十,虛一,用四十九
for _ in range(3): # 三變成一爻
n -= one_change(n, split(n))
return n // 4 # 剩餘策數除以四,得 6/7/8/9
uniform = lambda n: random.randint(1, n - 1)
bell = lambda n: min(max(sum(random.random() < 0.5 for _ in range(n)), 1), n - 1)
random.seed(1)
for name, f in (("uniform", uniform), ("bell", bell)):
c = Counter(one_line(f) for _ in range(200000))
print(name, {k: round(c[k] / 200000, 4) for k in (6, 7, 8, 9)})我跑出來的輸出是 uniform:6 為 0.047、7 為 0.2796、8 為 0.4521、9 為 0.2213;bell:6 為 0.062、7 為 0.314、8 為 0.4361、9 為 0.1879。你的結果若與此一致,表示程式與我的環境行為相同;若不同,把亂數種子與 Python 版本記下來。
可證偽的預測:我預測明天核對孔疏在「歸奇於扐以象閏」與「五歲再閏」處,會有具體的月數或日數算式(我查過維基文庫頁面只讀到「歸殘聚餘,分而成閏也」這一句短引,其他沒讀到)。若疏整段完全沒有月日數字,預測錯,我會更正。附一個我自己算的對照:五年兩閏是 62 個月,若一個朔望月取 29.530589 日,平均一年 366.18 日,比回歸年(約 365.2422 日)多 0.94 日;十九年七閏是 235 個月,平均一年 365.2468 日,只差約 0.005 日。這個對照不是疏的內容,只是我想看疏有沒有講到「五歲再閏」並不精確。
🔗 延伸學習
- 周易正義/07.08|維基文庫 — 繫辭上卷七之八,王弼注與京房、馬融、荀爽、鄭玄、姚信董遇對「其用四十有九」的各家說法在此;我只讀到摘要。
- 原本周易本義(四庫全書本)卷末上|維基文庫 — 「明筮」四言韻文,「不五則九」「三少為九」在這一頁。
- 易學啟蒙通釋(四庫全書本)全覽|維基文庫 — 「考變占第四」的七種變爻占法;注意是通釋本,不是朱熹原書的單行本。
- 繫辭上|中國哲學書電子化計劃 — 第九章原文,頁面標示底本為《武英殿十三經注疏》本《周易正義》。
💬 問 AI
我在做《繫辭上》「大衍之數五十,其用四十有九」的算法驗證。請嚴格區分三類資訊:(A)我貼給你的內容明說的;(B)你能指出具體出處(書名+卷次+版本)、可以查證的;(C)你自己的推論。不確定就寫「不確定」,不要用推測補足引文。
我目前的算法理解(請檢驗,不要附和):
1. 四十九策分二、掛一後剩 48,兩堆除以四的餘數(餘零當四)之和只能是 4 或 8,所以第一變的掛扐數是 5 的機率 3/4、9 的機率 1/4;第二、三變從 44 或 40 起,掛扐是 4 或 8 各 1/2。
2. 三變後剩 36/32/28/24 策,除以四得 9/8/7/6,機率是 3/16、7/16、5/16、1/16。
3. 起始策數用 50 且仍掛一,第一變恆為 6,老陰不可能出現;起始 48 則分布與三枚銅錢相同。
4. 一爻變的機率是 1/4,所以六爻中的變爻數是二項分布 B(6, 1/4)。
請回答:
1. 請檢查上面第 1 到 4 點的算術,指出任何錯誤,並用你自己的程式或手算驗證,貼出結果。
2. 歷代注家(除了京房、馬融、荀爽、鄭玄、姚信董遇)有沒有人注意到「49 而非 50 或 48」在餘數結構上的意義?請給書名與卷次,沒有就說沒有,不要編。
3. 朱熹《易學啟蒙》「考變占」的七種情況,在《啟蒙》原書(非通釋本)的措辭是什麼?「二爻變仍以上爻為主」「四爻變仍以下爻為主」的「仍」字是什麼意思?
4. 三枚銅錢法(六七八九機率 1/8、3/8、3/8、1/8)最早見於哪個時代的哪部文獻?請給出處,不確定就標不確定。
本題純屬算法與文獻考據學習,不涉及占卜或預測,也不要給任何吉凶或決策建議。