老阴老阳少阴少阳的概率
10 2026-02-04 10:09 2026-02-04 10:30
我来为您计算易经中老阴、老阳、少阴、少阳的概率。这取决于使用的占卜方法:
1. 铜钱占卜(三枚铜钱)
每枚铜钱有正反两面,三枚共有 2³ = 8 种等可能组合:
表格
复制
| 卦象 | 铜钱结果 | 概率计算 | 概率值 |
|---|---|---|---|
| 老阴 ⚏ (太阴,变爻) | 三个字(正面) | C(3,3)/8 | 1/8 = 12.5% |
| 少阳 ⚎ (太阳,不变) | 两个字一个背 | C(3,2)/8 | 3/8 = 37.5% |
| 少阴 ⚍ (少阴,不变) | 一个字两个背 | C(3,1)/8 | 3/8 = 37.5% |
| 老阳 ⚌ (太阳,变爻) | 三个背(反面) | C(3,0)/8 | 1/8 = 12.5% |
特点:变爻(老阴老阳)概率较低(各12.5%),不变爻(少阴少阳)概率较高(各37.5%)。
2. 蓍草占卜(大衍之数)
通过"四营三变"的复杂操作,概率分布如下:
表格
复制
| 卦象 | 数值 | 概率 | 运算逻辑 |
|---|---|---|---|
| 老阳 | 9 | 5/16 = 31.25% | (4+4+1)/16 或实际复杂分营结果 |
| 少阴 | 8 | 7/16 = 43.75% | 最多见的稳定阴爻 |
| 少阳 | 7 | 5/16 = 31.25% | 稳定的阳爻 |
| 老阴 | 6 | 1/16 = 6.25% | 最少见的变爻 |
特点:老阴最为罕见(6.25%),少阴最为常见(43.75%),体现了"阴主静、阳主动"的哲学观念。
对比总结
表格
复制
| 方法 | 老阴 | 少阴 | 少阳 | 老阳 | 特点 |
|---|---|---|---|---|---|
| 铜钱法 | 12.5% | 37.5% | 37.5% | 12.5% | 对称分布,简便易行 |
| 蓍草法 | 6.25% | 43.75% | 31.25% | 18.75% | 老阳实际约18.75%,老阴极稀有 |
注:严格的大衍筮法经过"十有八变而成卦",其概率计算涉及复杂的余数分配(挂一、揲四、归奇),上述蓍草概率为传统共识值。朱熹《易学启蒙》有详细记载。
您是想了解具体的占卜操作步骤,还是需要我用代码模拟验证这些概率?
64卦概率
根据占卜方法不同,64卦的概率分布如下:
1. 本卦概率(基础卦象)
无论铜钱法还是蓍草法,得到任意一卦(本卦)的概率均相等:
P(任意一卦)=641≈1.5625%
原因:
-
铜钱法:阳爻(少阳+老阳)概率 = 83+81=21 ,阴爻同理。六爻独立,每卦概率 (21)6=641
-
蓍草法:阳爻(7+9)概率 = 165+163=21 ,阴爻(6+8)概率 = 161+167=21
2. 变爻数量概率分布
两种占卜方法恰好具有相同的变爻概率(变爻即老阴、老阳):
表格
复制
| 变爻数量 | 概率计算 | 精确值 | 百分比 | 说明 |
|---|---|---|---|---|
| 0个(静卦) | (43)6 | 4096729 | 17.8% | 最稳定,无变化 |
| 1个 | C61(41)(43)5 | 40961458 | 35.6% | 最常见,看本卦+变爻辞 |
| 2个 | C62(41)2(43)4 | 40961215 | 29.7% | 看本卦两爻辞 |
| 3个 | C63(41)3(43)3 | 4096540 | 13.2% | 看本卦+之卦彖辞 |
| 4个 | C64(41)4(43)2 | 4096135 | 3.3% | 看上爻不变两爻 |
| 5个 | C65(41)5(43) | 409618 | 0.44% | 看之卦+不变爻 |
| 6个(全变) | (41)6 | 40961 | 0.024% | 极罕见,看之卦+乾坤用九用六 |
3. 特殊卦象概率
表格
复制
| 场景 | 概率 | 说明 |
|---|---|---|
| 六爻皆不变 | 4096729 | 占17.8%,据本卦卦辞占 |
| 一爻变 | 40961458 | 占35.6%,据本卦变爻爻辞占 |
| 六爻全变 | 40961 | 仅0.024%,乾坤用九用六,余观之卦 |
| 得到乾卦☰ | 641 | 与任何一卦相同 |
| 得到坤卦☷ | 641 | 与任何一卦相同 |
| 乾卦六爻皆老阳 | (81)6=2621441 | 铜钱法下仅0.00038% |
| 乾卦六爻皆九(蓍草) | (163)6≈184801 | 蓍草法下约0.0054% |
4. 方法差异对比
虽然本卦等概率,但爻位数值的分布不同:
表格
复制
| 方法 | 6(老阴) | 7(少阳) | 8(少阴) | 9(老阳) | 特点 |
|---|---|---|---|---|---|
| 铜钱法 | 12.5% | 37.5% | 37.5% | 12.5% | 对称,老阴老阳等概率 |
| 蓍草法 | 6.25% | 31.25% | 43.75% | 18.75% | 阴盛阳衰,老阴最稀有 |
关键结论:64卦本身无高低贵贱之分,概率均等。差异主要体现在"变卦"的稀有度上,特别是6个变爻的情况在4096次占卜中才出现约1次,古人视为"天机极端示警"。
您想进一步了解如何根据变爻数量选择占断方法(如"朱熹变卦法")吗?
v6, v5, v4 = random.randint(6, 9), random.randint(6, 9), random.randint(6, 9)
让6、7、8、9按照1/8、3/8、3/8、1/8的概率出现应该如何修改代码?
要实现铜钱占卜的正确概率分布(6: 1/8, 7: 3/8, 8: 3/8, 9: 1/8),需要使用加权随机而不是均匀随机。
修改方案
方法1:使用 random.choices(推荐)
Python
复制
import random
# 单次生成
v = random.choices([6, 7, 8, 9], weights=[1, 3, 3, 1], k=1)[0]
# 同时生成三爻
v6, v5, v4 = random.choices([6, 7, 8, 9], weights=[1, 3, 3, 1], k=3)
方法2:使用 random.random 区间映射
Python
复制
import random
def yao():
r = random.random()
if r < 1/8: # 0.0 ~ 0.125
return 6 # 老阴(变爻)
elif r < 4/8: # 0.125 ~ 0.5
return 7 # 少阳(不变)
elif r < 7/8: # 0.5 ~ 0.875
return 8 # 少阴(不变)
else: # 0.875 ~ 1.0
return 9 # 老阳(变爻)
v6, v5, v4 = yao(), yao(), yao()
概率验证
Python
复制
import random
from collections import Counter
# 测试100万次
results = random.choices([6, 7, 8, 9], weights=[1, 3, 3, 1], k=1000000)
count = Counter(results)
print("理论概率: 6=12.5%, 7=37.5%, 8=37.5%, 9=12.5%")
print("实际频率:", {k: f"{v/10000:.2f}%" for k, v in count.items()})
对比:错误 vs 正确
表格
复制
| 方法 | 代码 | 6的概率 | 7的概率 | 问题 |
|---|---|---|---|---|
| ❌ 错误 | randint(6,9) |
25% | 25% | 四数等概率,不符合铜钱占卜 |
| ✅ 正确 | choices(weights=[1,3,3,1]) |
12.5% | 37.5% | 符合三枚铜钱概率 |
铜钱占卜原理对应
Python
复制
import random
def cast_coin():
"""模拟三枚铜钱投掷,返回6/7/8/9"""
coins = [random.choice([2, 3]) for _ in range(3)] # 2=反(阴), 3=正(阳)
total = sum(coins)
# 3=6老阴, 4=7少阳, 5=8少阴, 6=9老阳
mapping = {3: 6, 4: 7, 5: 8, 6: 9}
return mapping[total]
# 验证:此方法与 weighted choices 结果一致
推荐使用
random.choices,代码简洁且概率明确可控。连续三次单次生成和同时生成三爻有区别吗?
没有区别。两种方式在概率分布和独立性上完全等价。
数学等价性
Python
复制
import random
# 方式A:连续三次单次生成
v6 = random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0]
v5 = random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0]
v4 = random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0]
# 方式B:同时生成三爻
v6, v5, v4 = random.choices([6,7,8,9], weights=[1,3,3,1], k=3)
完全等价,因为:
-
每次调用
random.choices都是独立随机事件 -
方式B只是方式A的语法糖,内部实现相同
验证代码
Python
复制
import random
from collections import Counter
def method_a():
"""连续三次单次"""
return (
random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0],
random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0],
random.choices([6,7,8,9], weights=[1,3,3,1], k=1)[0]
)
def method_b():
"""同时生成三爻"""
return tuple(random.choices([6,7,8,9], weights=[1,3,3,1], k=3))
# 各运行10万次,统计三爻组合分布
count_a = Counter(method_a() for _ in range(100000))
count_b = Counter(method_b() for _ in range(100000))
print(f"方式A唯一组合数: {len(count_a)}") # ≈ 64种
print(f"方式B唯一组合数: {len(count_b)}") # ≈ 64种
print(f"Top3组合A: {count_a.most_common(3)}")
print(f"Top3组合B: {count_b.most_common(3)}")
真正需要注意的区别
表格
复制
| 场景 | 是否有区别 | 说明 |
|---|---|---|
| 单次vs单次 | ❌ 无区别 | 独立同分布 |
| k=1调用三次 vs k=3一次 | ❌ 无区别 | 完全等价 |
| 不同random实例 | ❌ 无区别 | 各实例独立,但分布相同 |
| 设置随机种子后 | ✅ 有区别 | random.seed(42) 后结果可复现,但两种方法仍等价 |
| 多线程环境 | ✅ 可能有区别 | 需考虑线程安全,建议各线程独立random实例 |
实际应用建议
Python
复制
import random
# ✅ 推荐:简洁写法
yao_list = random.choices([6,7,8,9], weights=[1,3,3,1], k=6) # 直接得六爻
v6, v5, v4, v3, v2, v1 = yao_list # 解包,v6为上爻,v1为初爻
# 或使用命名元组增强可读性
from collections import namedtuple
Yao = namedtuple('Yao', ['shang', 'wu', 'si', 'san', 'er', 'chu'])
guan = Yao(*random.choices([6,7,8,9], weights=[1,3,3,1], k=6))
结论:两种写法任选,性能和行为完全一致。选择可读性更好的即可。
全部评论