每一卦背后
是同一种数据结构
无论你用铜钱、蓍草、还是一段哈希,我们最终都把结果折叠为同一种内部表示:一个长度为 6 的数组,每个元素属于 {6, 7, 8, 9} 四种状态之一。
- 7 / 8 为静爻,不变
- 6 / 9 为动爻,本卦此位翻转 → 变卦
→ 六爻自下而上,确定本卦(64 种)
→ 动爻位置,确定变卦
所以一卦背后并不是"一个数字",而是一对状态:本卦 → 变卦。每种起卦方式只是定义了不同的"如何为这 6 位取值"的程序。
铜钱六爻 · 二项分布
最朴素的方法。三枚铜钱,正反各按 2 或 3 计点,三枚之和恰好覆盖 6/7/8/9 四种状态。每爻独立,连掷六回。
取数过程
设单枚硬币 P(正) = P(反) = 1/2。三枚相加之和服从 Binomial(3, 1/2) 加偏移的离散分布。
三枚和 ∈ { 6, 7, 8, 9 }
→ P(6) = 1/8, P(7) = 3/8, P(8) = 3/8, P(9) = 1/8
概率分布
铜钱法下"动爻"的总概率为 1/8 + 1/8 = 1/4;每卦平均动爻数为 6 × 1/4 = 1.5。
大衍筮法 · 不对称的真分布
系辞所记的"君子之筮"。五十蓍草去一,剩四十九,经"分二、挂一、揲四、归奇"三变得一爻 —— 十八变成卦。其重要意义不在仪式,而在它给出的概率分布与铜钱法不同。
取数过程
三变成一爻 · 十八变成一卦
→ P(6)=1/16, P(7)=5/16, P(8)=7/16, P(9)=3/16
概率分布
分而为二以象两,挂一以象三,揲之以四以象四时。"
梅花起卦 · 模运算
邵雍的发明:把"取数"从随机过程改写为确定性算术。任意整数皆可入卦,时间也是整数。
以年月日时为种子
下卦 = (上式 + 时辰) mod 8
动爻 = (年支 + 月 + 日 + 时辰) mod 6
余 0 取 8 / 余 0 取 6
报两个数字
下卦 = B mod 8
动爻 = (A + B) mod 6
新派 · 万物起卦
把"取数"的输入面打开 —— 任何能被字节化的东西,文字、诗、声波、像素,都可以入卦。统一管线如下:
输入
text / audio / image / any bytes
归一化
UTF-8 / PCM / 灰度像素流
哈希
SHA-256(bytes) → 32 字节
取模
h[0..5] mod 2 → 六爻
h[6] mod 6 → 动爻
映射
六位二进制 → 64 卦表
设计原则 · 同样的输入永远得到同样的卦 —— 这与铜钱、蓍草的随机性不同。它是一种确定性映射,因此可被任何人独立复现。
随机性来自哪里?
传统派 · 加密级伪随机
所有需要随机的操作(铜钱投掷、蓍草分堆)均调用操作系统提供的加密级随机源 · Ruby SecureRandom / Linux /dev/urandom。
coin = SecureRandom.random_number(2)
→ 周期 ≈ 2²⁵⁶,无任何已知预测攻击
新派 · 完全确定
新派起卦默认不引入任何随机性。同样的字节序列 = 同样的卦象。你可以把它当作"对一段输入的指纹"。
"那它能算准吗?"
能。在数学的意义上 —— 它能算准"两个一模一样的输入会得到同一个卦"这件事;它能算准"在十六分之七的概率上你会得到一爻少阴"这件事。
它不能算准你明年会不会涨工资,因为概率分布与你的工资之间没有任何因果链条 —— 它们之间的"对应关系"是文化建立的,不是物理建立的。象数把数学的部分做到了能做的最好;至于那个文化层,我们留给你自己去想。
这就是为什么"起卦免费且无限"。这是工具,不是商品。