八卦蓍草卜与铜钱卜概率差异研究
前言
易经中并没有记载具体的卜卦方法,于是后人就根据一些线索推断出了几套卜卦的方法。其中最出名的就是两套:铜钱卜法与蓍草卜法。
铜钱卜的具体做法是取三枚铜钱,正面为阳,反面为阴。投掷一次,有如下情况:
- 三面都是正面,则为老阳
- 三面都是反面,则为老阴
- 只有一面是正,则为少阳
- 只有一面是反,则为少阴
普通人可能并不知道“老少”的概念。简单来说,具体到每一卦,都由从上到下排列的六根线段组成,这些线段被称为“爻”。爻分阴阳,长横为阳,两短横为阴。如果占得老阴或者老阳,那么就形成了所谓的“变爻”:老阴变为少阳,而老阳则变为少阴。根据变爻的情况不同,解卦方式也不同,有时候只需要解读本卦(未变之前的卦项)上的变爻爻辞,有时候则需要看变爻之后形成的“变卦”卦辞。具体方法在这里不做讨论。
而蓍草法,又称大衍筮法,则更为复杂,耗时更久,会在下面的分节中具体讨论。
非常神奇的是,这两种占卜方法的得卦概率并不相同,今天这篇文章就是对此现象进行研究的一个尝试。
而无论是铜钱卜和蓍草卜,区别都在于生成单爻的概率分布,因此不需要考虑整卦,只要研究每爻中少阴、少阳、老阴、老阳各自的概率情况即可。
铜钱卜
铜钱卦的情形比较简单,简单的数学计算就可以得到每爻的概率。总共 1+3+3+1 = 8 种情形,老阴老阳的概率各为 1/8 , 少阴少阳的概率各为 3/8 。
蓍草卜
蓍草占卜需要 49 根蓍草。占卜出一爻需要 3 “变”,也就是三次循环。每次的步骤一致,都是先将一堆蓍草随意分成 2 叠,从任意一叠中拿走一根,然后对两堆分别进行对 4 取余,然后从相应的堆中取走和余数相等的蓍草,如果被 4 整除,那么就需要拿走 4 根。最后归并两堆重新开始,如此共进行三次循环1。然后对最终剩下的蓍草数量除以 4 ,得到的商必然是在 6,7,8,9 之中,各自对应:
- 6: 老阴
- 7: 少阳
- 8: 少阴
- 9: 老阳
首先我们来看进行蓍草卜三变后剩余情况有哪些可能性。为了讨论方便,首先我们来先看看两数的余数,与两数之和的余数的关联。
设有被除数 a,b ,除数 c; a,b 除 c 后的商与余数各自为 (k1,r1),(k2,r2) 则有:a+b=k1*c+r1+k2*c*r2=c*(k1+k2)+(r1+r2)。由此可知,和的余数与余数之和是同余的。举例:
- 48=21+27, 48mod4=0, 21mod4=1, 27mod4=3
- 35=14+21, 35mod4=3, 14mod4=2, 21mod4=1
考虑最初始的情形。总数为 49 ,取走一根后两堆数量之和为 48 ,能被 4 整除,按照之前对余数之和与和的余数进行的分析,可知无论两堆如何划分,其余数之和必定也能被 4 整除。那么从两堆中取走的蓍草数量的组合必定是:(4,4),(1,3),(3,1),(2,2) 中的一个,即共取走 4+4=8 根,或者 1+3=4 根。因此一变之后,剩余的蓍草数必然是 44 或者 40 根。按照同样的逻辑往下计算,可以得到如下的决策树:
假设分堆并抽 1 后,剩下每堆蓍草最小值为 1 ,并且每堆数量在区间 [1, 总数-1] 内概率分布相等,那么我们可以用简单的随机数进行概率模拟,容易写出如下代码:
import numpy as np
LEAST_AMOUNT = 1
def pick(x):
if x%4 == 0:
return 4
return x%4
def simulate():
amount = 49
for _ in range(3):
amount -= 1 # 先取 1 再分堆;先分堆再取 1, 本质上是一样的
pile1 = np.random.randint(LEAST_AMOUNT, amount-LEAST_AMOUNT+1)
pile2 = amount - pile1
amount = amount - pick(pile1) - pick(pile2)
return amount
def simulate_Ntimes(N):
samples = []
for _ in range(N):
samples.append(simulate())
unique, counts = np.unique(samples, return_counts=True)
return dict(zip(unique, map(lambda x:x/N, counts)))
模拟一百万次后得到的结果分布是:
数值 | 含义 | 概率 | 百分比 |
---|---|---|---|
24 | 老阴 | 0.05185 | 5.2% |
28 | 少阳 | 0.288275 | 28.8% |
32 | 少阴 | 0.448348 | 44.8% |
36 | 老阳 | 0.211527 | 21.1% |
其中阴阳比例大致相等。
上述模型的第一个缺陷,就是对 LEAST_AMOUNT
的选择,为了简便起见,在之前的模拟中,这个值的选择是任意的。为了更全面地进行考察,我们也可以尝试将这个值调大:
结果\LEAST_AMOUNT | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
24 | 5.2% | 6.1% | 7.2% | 6.7% | 4.9% | 6.1% | 7.7% | 6.8% |
28 | 28.8% | 31.2% | 33.5% | 31.7% | 28.2% | 31.1% | 34.2% | 31.8% |
32 | 44.8% | 43.9% | 42.7% | 43.3% | 45.1% | 43.9% | 42.1% | 43.2% |
36 | 21.1% | 18.9% | 16.5% | 18.3% | 21.8% | 18.9% | 16.0% | 18.2% |
我们可以发现一个奇特的现象,无论我们将每堆的最小值如何调整,老阴的概率总是比老阳的要低很多(阳更容易变阴,而阴却不容易变阳);而在铜钱卦中,比值则是均匀的 1:3:3:1 ,老阴和老阳有同样的机率。
这个模型的第二个缺陷,就是假定了在区间内每个数的概率均等,但是在现实中,有的人更倾向于均分,有的人则喜欢少取,还有的人完全凭一时的手气,不太可能出现像是这个模拟计算过程中如此均匀的概率分布。
在写这篇的时候,我去看了几个易学论坛以及两篇论文。他们都得出了类似的结论,即蓍草法可能并非历史上真正的占卜法,他们会如此推论,都是基于一个简单的信念,即从概率上看,老阴老阳出现频率应该大致相等。还有的人从春秋中记载的一百多个占卜记录中找到证据,计算出了老阴老阳出现的概率,同样支持了这一信念。
我对于《易经》的态度,大约等同于我对《圣经》的看法:其本身未必真有什么玄妙之处,但是历史上了无数人如此确信,因而各自成了研究相应文化现象中不可缺少的工具。引一个不恰当的比喻,正如《鬼吹灯》中,风水未必确有其事,但是既然墓主人依靠风水选址,那么摸金校尉们当然就可以反过来利用风水分金定穴。
我在读《周易江湖》的时候,看到了这个问题,并对其背后的数学原理产生了兴趣。至于最原始的八卦究竟如何得卦,我并不太在意,或许它们的概率本就不同吧,以此为基础进行解读,也可以得出一些有趣的猜想。
-
在对第二、第三次循环中是否还要取 1 ,学界有所争论,这里只讨论每次都要取 1 的情况。 ↩︎