
六十四卦的概率分布用统计方法重构卦象发生频率一、见证奇迹的时刻六十四卦是均匀分布吗《易经》六十四卦由六爻组成每爻有阴阳两种可能排列组合共计 2⁶ 64 种。如果每爻独立且阴阳等概率出现六十四卦应服从均匀分布每卦出现概率为 1/64 ≈ 1.56%。但实际卜卦过程并非简单随机抽样。传统卜卦方法如大衍筮法、金钱卦的起卦过程存在结构性偏差。大衍筮法中经过分二、挂一、揲四、归奇四步操作后结果并非完全均匀。金钱卦中三枚铜钱掷出老阳三个正面的概率为 1/8而少阴一个正面两个反面的概率为 3/8。这意味着各爻的动爻老阳、老阴与静爻少阳、少阴概率并不相等。如果各爻状态的概率不同六十四卦的分布就不再是均匀的。某些卦象会显著更频繁地出现而另一些则极为罕见。这个事实对于将卦象分析应用于机器学习建模至关重要——概率分布直接影响模型训练时的类别平衡和损失函数设计。从统计角度看这种非均匀不是方法缺陷而是起卦过程的结构特征。理解并量化这个特征比假设均匀分布更有分析价值。二、从起卦过程到概率分布蒙特卡洛模拟验证flowchart TD A[起卦方法选择] -- B{大衍筮法} A -- C{金钱卦法} B -- B1[分二: 49根蓍草随机分两堆] B1 -- B2[挂一: 取一根挂起] B2 -- B3[揲四: 每四根为一组计数] B3 -- B4[归奇: 剩余蓍草归拢] B4 -- B5[三变定一爻] B5 -- B6{爻的概率分布} C -- C1[三枚铜钱掷六次] C1 -- C2[每次结果: 4种可能] C2 -- C3{爻的概率分布} B6 -- D[老阳概率 ≈ 3/16] B6 -- E[少阴概率 ≈ 7/16] B6 -- F[少阳概率 ≈ 5/16] B6 -- G[老阴概率 ≈ 1/16] C3 -- C31[老阳: 1/8] C3 -- C32[少阴: 3/8] C3 -- C33[少阳: 3/8] C3 -- C34[老阴: 1/8] D -- H[六十四卦概率分布] E -- H F -- H G -- H C31 -- H C32 -- H C33 -- H C34 -- H H -- I[非均匀分布] I -- J{统计特征} J -- K[高频卦象 TOP 10] J -- L[低频卦象 BOTTOM 10] J -- M[集中度指标 Gini 系数] style I fill:#ff9800,color:#fff style K fill:#1565c0,color:#fff style L fill:#c62828,color:#fff关键发现金钱卦法中每种爻的概率分布存在差异老阳 ≠ 老阴的概率导致不同卦象的出现频率不同大衍筮法中老阳、少阴、少阳、老阴的比例约为 3:7:5:1非等概率分布两种起卦方法得到的六十四卦分布曲线形状相似但峰值位置不同。三、蒙特卡洛模拟用代码验证直觉猜想import numpy as np from collections import Counter import matplotlib.pyplot as plt def simulate_coin_divination(num_trials: int 100000): 金钱卦法蒙特卡洛模拟 设计原因每次模拟独立生成六爻统计所有卦象的出现频率 不做任何作弊或人为干预纯随机模拟 # 设计原因三枚铜钱的结果概率 # 3正(老阳): 1/8, 2正1反(少阴): 3/8, 1正2反(少阳): 3/8, 3反(老阴): 1/8 coin_probs [1/8, 3/8, 3/8, 1/8] line_types [老阳, 少阴, 少阳, 老阴] # 设计原因用字典而非 list 存储卦象计数 # 六十四卦的编号作为 key方便后续按概率排序和分析分布 hexagram_counts Counter() for _ in range(num_trials): # 设计原因一次生成六爻每爻独立抽取 # 从下往上排列初爻→上爻对应卦象的二进制编码 lines np.random.choice(line_types, size6, pcoin_probs) # 设计原因将爻类型转为阴阳老阳和少阳为阳爻少阴和老阴为阴爻 # 六位二进制码即为卦象的唯一标识 binary .join([1 if l in [老阳, 少阳] else 0 for l in lines]) hexagram_id int(binary, 2) hexagram_counts[hexagram_id] 1 return hexagram_counts def analyze_distribution(counts: Counter): 分析卦象分布特征 设计原因使用多种统计指标而非单一指标 不同指标反映分布的不同侧面——均值、方差、Gini 各有侧重 values np.array(list(counts.values())) probs values / values.sum() stats { total_trials: values.sum(), mean: values.mean(), std: values.std(), min_prob: probs.min(), max_prob: probs.max(), max_min_ratio: probs.max() / probs.min(), # 设计原因Gini 系数衡量分布的不均匀程度 # 0 完全均匀1 完全不均匀所有概率集中在一个类别 gini: 1 - np.sum((np.sort(probs).cumsum() / probs.sum()) ** 2) * 2 / len(probs), # 设计原因如果完全均匀每个概率 1/64 ≈ 0.015625 # 卡方值反映偏离均匀分布的程度 chi2: np.sum((values - values.mean())**2 / values.mean()), } # 设计原因输出概率最高和最低的 5 个卦象 # 帮助理解哪些卦象是常见的哪些是罕见的 sorted_items sorted(counts.items(), keylambda x: x[1], reverseTrue) stats[top5] [(f卦{hex(k):02d}, v/stats[total_trials]*100) for k, v in sorted_items[:5]] stats[bottom5] [(f卦{hex(k):02d}, v/stats[total_trials]*100) for k, v in sorted_items[-5:]] return stats # 执行模拟 counts simulate_coin_divination(100000) stats analyze_distribution(counts) print(fGini 系数: {stats[gini]:.4f}) print(f最大/最小概率比: {stats[max_min_ratio]:.2f}x) print(f卡方统计量: {stats[chi2]:.2f})四、统计规律的边界概率不等于必然需要明确几个重要边界模拟假设 vs 现实偏差上述模拟假设每次掷硬币的结果完全独立且概率固定。但在实际卜卦中操作者的手法习惯、铜钱的质量不均匀、掷币力度等因素会引入系统性偏差。这些偏差可能导致实际分布进一步偏离理论分布。概率解读的陷阱卦象 X 的概率是 Y 的 2 倍不意味着卦象 X 更准确或更常见。概率只反映起卦过程的随机性特征与卦象本身的义理无关。机器学习建模的启示如果使用卦象作为分类标签训练模型需要处理类别不平衡问题使用加权损失函数或重采样六十四卦不是 64 个独立类别——它们之间存在相似性如互卦、综卦关系可以用层次化标签或对比学习来建模起卦过程的结构性偏差本身就是有价值的信息不应简单地当作噪声排除。五、总结六十四卦在传统起卦过程中并非均匀分布。金钱卦法和大衍筮法中各爻状态的概率不等导致卦象的出现频率存在结构性差异。蒙特卡洛模拟可以量化这种非均匀分布的程度Gini 系数和卡方统计量是衡量偏离均匀分布的有效指标。概率分布的不均匀性对基于卦象的机器学习建模产生直接影响——需要处理类别不平衡和卦象之间的结构关联。同时需注意模拟假设的理想条件与现实卜卦过程存在差异概率分析不替代卦象本身的义理解读。