十亿次实验,用概率解读周易大衍筮法的奥秘

还记得封神电影里的文王占卜吗?

也就是著名的大衍筮法。

《易传》曰:大衍之数五十,其用四十有九。分而为二以象两,挂一以象三, 揲之以四以象四时,归奇于扐以象闰,五岁再闰,故再扐而后挂……

具体的操作步骤:

(1) 取蓍草签50支。
(2) 抽取1支,横放置其上,以象征太极。
(3) 将余下49支一分为二,左右各一组(象征太极分两仪,取天地之象,左天右地)
(4) 从右组(亦有从左取)中抽取1支,夹于左手小指与无名指之间。(取三才之象)
(5) 将右组余下之数,每4支为一小组,最后剩余之数夹于左手无名指与中指之间(如无剩余,即取最后四支)。
(6) 左组如是重复,剩余之数夹于左手中指与食指之间。
(7) 将三次取签置于左上。
(8) 余下蓍签混合,如之重复。共三次。
(9) 于第三次,查看左右剩余组数(每4支为一组),所得组数,是为第一爻之数。
(10) 将所有蓍签重新混合,如之重复六次,得出全部六爻的代表数字。注:6、8为阴爻,7、9为阳爻,以此画出卦象,得出“本卦”。 9、6为老阳老阴之数,7、8为少阳少阴之数,老变少不变,爻变之后得出新的卦象,是为“之卦”。

然后再按照朱熹的解卦方法:

1、六爻皆不变者,则占本卦卦辞;
2、一爻变者,则以本卦变爻之辞占;
3、二爻变者,则以本卦二变爻之辞占,而以上爻之辞为主;
4、三爻变者,则占本卦及之卦的卦辞,而以本卦为主;
5、四爻变者,则以之卦中二不变之爻辞占,以下爻之辞为主;
6、五爻变者,则以之卦中不变爻的爻辞占;
7、六爻皆变者,则以乾坤二用之辞占,并参考其之卦卦辞。

好了,接下来我们来用程序探寻其中的奥秘。

关于大衍筮法的实现,根据上文中的规则,我在其中加入了一个设定,就是左右手分蓍草的时候,设定了一个常规值边界,避免出现两端特别不平均的情况。因为按照常理来说一分为二大家都会趋近于平衡,至少不低于总数的20%,很少某一边就留下一两根另外一边很多,不然这就是完全可控的结果了,是为心不诚。

不过从实验结果来看,即使这个设定去掉,变成完全随机也不影响结果。因为从正态分布来看,两极化的概率本来就很低。

完整代码在结尾,我们先来看十亿次运行的相关数据:

首先是6789即老阳少阳老阴少阴的分布:

占卜单爻统计:
触发剩余6堆的次数:87502119,占比1.4584%
触发剩余7堆的次数:862489000,占比14.3748%
触发剩余8堆的次数:2462507168,占比41.0418%
触发剩余9堆的次数:2587501713,占比43.1250%

从这个概率上来看就有点超乎想象,8和9的数明显很多,而6却仅有1.46%,甚至都不符合正态分布,这是怎么回事呢?

我们回到大衍筮法的三次求余结果来看,第一次总数是49,取1根在左手小指与无名指之间。即剩48,分成2份要么左右两边都被4整除,那么左右两边各取4根,加上1根即为9根,若不能被4整除,则左右余数和为4根,加上1根为5根,即第一次的结果减少的数量必然是5或者9。这样第二次的数量就是【40,44】

第二次同理,取1根变成39或43,若一边能被4整除,则为4+3,否则为3,再加上1根,即第二次的结果减少的数量必然是4或者8

如此下来区间分布就是【32,36,40】

以此类推,第三次减少的数量必然也是4或者8,则最后区间为【24,28,32,36】

这也就是最后的6,7,8,9。

但这里有一个问题,就是整除的概率肯定是低于不能整除的,所以减少量蓍草的概率很大,那么最终结果一定偏向8,9。

8为少阴不变,9为老阳会变。那么如果按照这样的方式来看的话,其之卦阴爻的概率会非常大。

我们再来看变爻数量的统计:

变爻数量统计:
触发变爻0个的次数:28951575,占比2.8952%
触发变爻1个的次数:139810204,占比13.9810%
触发变爻2个的次数:281207674,占比28.1208%
触发变爻3个的次数:301619211,占比30.1619%
触发变爻4个的次数:181988467,占比18.1988%
触发变爻5个的次数:58570435,占比5.8570%
触发变爻6个的次数:7852434,占比0.7852%

结合上面单个爻来看,得78的概率为55%,得69的为45%,则在原有正态分布上向少变的方向偏移。3爻变为主,根据朱熹的方法来看,三爻变者,则占本卦及之卦的卦辞,而以本卦为主,那么主要还是看本卦。如此来看,一次占卜取本卦的概率为75%左右。

重点来了,我们来看高频结果分布:

最高频率出现的六爻组合:
999999,对应的是坤为地卦卦辞,命中次数:6432632,占比0.6433%
999989,对应的是坤为地卦六五,命中次数:6126931,占比0.6127%
899999,对应的是坤为地卦初六,命中次数:6124713,占比0.6125%
999899,对应的是坤为地卦六四,命中次数:6122186,占比0.6122%
989999,对应的是坤为地卦六二,命中次数:6121905,占比0.6122%
999998,对应的是坤为地卦上六,命中次数:6120829,占比0.6121%
998999,对应的是坤为地卦六三,命中次数:6119796,占比0.6120%
989989,对应的是坤为地卦六二,命中次数:5831454,占比0.5831%
998899,对应的是坤为地卦六三,命中次数:5830619,占比0.5831%
899989,对应的是坤为地卦初六,命中次数:5830615,占比0.5831%
989899,对应的是坤为地卦六二,命中次数:5829030,占比0.5829%
999898,对应的是坤为地卦六四,命中次数:5828027,占比0.5828%
898999,对应的是坤为地卦初六,命中次数:5827550,占比0.5828%
899998,对应的是坤为地卦初六,命中次数:5825842,占比0.5826%
999889,对应的是坤为地卦六四,命中次数:5825424,占比0.5825%
989998,对应的是坤为地卦六二,命中次数:5825309,占比0.5825%
998989,对应的是坤为地卦六三,命中次数:5825153,占比0.5825%
899899,对应的是坤为地卦初六,命中次数:5824469,占比0.5824%
988999,对应的是坤为地卦六二,命中次数:5824108,占比0.5824%
999988,对应的是坤为地卦六五,命中次数:5823373,占比0.5823%
998998,对应的是坤为地卦六三,命中次数:5822505,占比0.5823%
889999,对应的是坤为地卦初六,命中次数:5821532,占比0.5822%
998889,对应的是山泽损卦卦辞,命中次数:5548309,占比0.5548%
898899,对应的是风水涣卦卦辞,命中次数:5547928,占比0.5548%
889989,对应的是火山旅卦卦辞,命中次数:5546095,占比0.5546%
889899,对应的是风山渐卦卦辞,命中次数:5546081,占比0.5546%
989898,对应的是水火既济卦卦辞,命中次数:5545998,占比0.5546%
989988,对应的是雷火丰卦卦辞,命中次数:5545832,占比0.5546%
899889,对应的是山风蛊卦卦辞,命中次数:5545630,占比0.5546%
899988,对应的是雷风恒卦卦辞,命中次数:5545563,占比0.5546%
898989,对应的是火水未济卦卦辞,命中次数:5545468,占比0.5545%
888999,对应的是天地否卦卦辞,命中次数:5545315,占比0.5545%
988899,对应的是风雷益卦卦辞,命中次数:5545286,占比0.5545%
999888,对应的是地天泰卦卦辞,命中次数:5544157,占比0.5544%
998988,对应的是雷泽归妹卦卦辞,命中次数:5543820,占比0.5544%
899898,对应的是水风井卦卦辞,命中次数:5543394,占比0.5543%
889998,对应的是泽山咸卦卦辞,命中次数:5543317,占比0.5543%
989889,对应的是山火贲卦卦辞,命中次数:5542955,占比0.5543%
998898,对应的是水泽节卦卦辞,命中次数:5542900,占比0.5543%
898998,对应的是泽水困卦卦辞,命中次数:5542092,占比0.5542%
988989,对应的是火雷噬嗑卦卦辞,命中次数:5540398,占比0.5540%
988998,对应的是泽雷随卦卦辞,命中次数:5538312,占比0.5538%
898898,对应的是坎为水卦九五,命中次数:5279040,占比0.5279%
988988,对应的是震为雷卦九四,命中次数:5278573,占比0.5279%
889889,对应的是艮为山卦上九,命中次数:5278318,占比0.5278%
888998,对应的是泽地萃卦九五,命中次数:5277648,占比0.5278%
888989,对应的是火地晋卦上九,命中次数:5277628,占比0.5278%
998888,对应的是地泽临卦九二,命中次数:5277383,占比0.5277%
898988,对应的是雷水解卦九四,命中次数:5276684,占比0.5277%
988889,对应的是山雷颐卦上九,命中次数:5276590,占比0.5277%
899888,对应的是地风升卦九三,命中次数:5275993,占比0.5276%
988898,对应的是水雷屯卦九五,命中次数:5275766,占比0.5276%
889898,对应的是水山蹇卦九五,命中次数:5275711,占比0.5276%
898889,对应的是山水蒙卦上九,命中次数:5274543,占比0.5275%
888899,对应的是风地观卦上九,命中次数:5273246,占比0.5273%
889988,对应的是雷山小过卦九四,命中次数:5273043,占比0.5273%
989888,对应的是地火明夷卦九三,命中次数:5270899,占比0.5271%
898888,对应的是地水师卦九二,命中次数:5025661,占比0.5026%
888889,对应的是山地剥卦上九,命中次数:5024354,占比0.5024%
889888,对应的是地山谦卦九三,命中次数:5023523,占比0.5024%
888898,对应的是水地比卦九五,命中次数:5022464,占比0.5022%
888988,对应的是雷地豫卦九四,命中次数:5022103,占比0.5022%
988888,对应的是地雷复卦初九,命中次数:5020392,占比0.5020%
888888,对应的是坤为地卦卦辞,命中次数:4776505,占比0.4777%

可以看出,坤卦独占鳌头,因为都是从89的之卦变来的,虽然采取之卦的只占25%,但是大部分取之卦的都会成为坤卦。紧随其后的就是3个8和3个9的组合,对应的山泽损、风水涣、火山旅、风山渐等,其概率都在0.55%左右,再往后就是4个8和2个9的组合,然后5个8和1个9,6个8……

我们再来看最容易命中的一些爻:

全部结果数量为448,最容易命中的前50爻:
坤为地卦初六,命中次数:35424379,占比3.5424%
坤为地卦六二,命中次数:29607818,占比2.9608%
坤为地卦六三,命中次数:23780315,占比2.3780%
坤为地卦六四,命中次数:17963279,占比1.7963%
地雷复卦初九,命中次数:17363488,占比1.7363%
地水师卦九二,命中次数:15507683,占比1.5508%
地山谦卦九三,命中次数:13646200,占比1.3646%
坤为地卦六五,命中次数:12144650,占比1.2145%
雷地豫卦九四,命中次数:11782543,占比1.1783%
坤为地卦卦辞,命中次数:11213372,占比1.1213%
水地比卦九五,命中次数:9918559,占比0.9919%
风泽中孚卦卦辞,命中次数:8120183,占比0.8120%
天雷无妄卦卦辞,命中次数:8120032,占比0.8120%
巽为风卦卦辞,命中次数:8119114,占比0.8119%
山天大畜卦卦辞,命中次数:8118739,占比0.8119%
泽风大过卦卦辞,命中次数:8117270,占比0.8117%
离为火卦卦辞,命中次数:8116733,占比0.8117%
火泽睽卦卦辞,命中次数:8116215,占比0.8116%
火风鼎卦卦辞,命中次数:8115826,占比0.8116%
风火家人卦卦辞,命中次数:8115727,占比0.8116%
泽火革卦卦辞,命中次数:8115349,占比0.8115%
水天需卦卦辞,命中次数:8114301,占比0.8114%
天水讼卦卦辞,命中次数:8113852,占比0.8114%
天山遁卦卦辞,命中次数:8113817,占比0.8114%
兑为泽卦卦辞,命中次数:8112764,占比0.8113%
雷天大壮卦卦辞,命中次数:8112233,占比0.8112%
山地剥卦上九,命中次数:8060849,占比0.8061%
地泽临卦九二,命中次数:7385294,占比0.7385%
地风升卦九三,命中次数:7375511,占比0.7376%
地火明夷卦九三,命中次数:7372569,占比0.7373%
震为雷卦九四,命中次数:7371632,占比0.7372%
雷水解卦九四,命中次数:7369888,占比0.7370%
泽地萃卦九五,命中次数:7367617,占比0.7368%
坎为水卦九五,命中次数:7367414,占比0.7367%
雷山小过卦九四,命中次数:7367147,占比0.7367%
水雷屯卦九五,命中次数:7365431,占比0.7365%
水山蹇卦九五,命中次数:7364596,占比0.7365%
艮为山卦上九,命中次数:7361710,占比0.7362%
火地晋卦上九,命中次数:7358757,占比0.7359%
山雷颐卦上九,命中次数:7356135,占比0.7356%
山水蒙卦上九,命中次数:7355175,占比0.7355%
风地观卦上九,命中次数:7354501,占比0.7355%
泽天夬卦卦辞,命中次数:6909872,占比0.6910%
火天大有卦卦辞,命中次数:6909585,占比0.6910%
天泽履卦卦辞,命中次数:6908897,占比0.6909%
风天小畜卦卦辞,命中次数:6908345,占比0.6908%
天火同人卦卦辞,命中次数:6906485,占比0.6906%
天风姤卦卦辞,命中次数:6904675,占比0.6905%
风水涣卦卦辞,命中次数:6352285,占比0.6352%
山泽损卦卦辞,命中次数:6351348,占比0.6351%

不同的六爻结果根据朱熹的解卦法映射到不同的爻辞,384个爻辞+64个卦辞共计448个结果。在这其中坤卦居首,后面五阴一阳的次之,而其顺序也是由阳爻的位置从下到上,因为主要影响的因素在于“四爻变者,则以之卦中二不变之爻辞占,以下爻之辞为主;”所以四个爻都是9的,会优先取下面的爻辞,故地雷复>地水师>地山谦。

顺带一提,最不容易出现的:

最不容易命中的前50爻:
天风姤卦初六,命中次数:880,占比0.0001%
天水讼卦初六,命中次数:2766,占比0.0003%
巽为风卦初六,命中次数:2894,占比0.0003%
火风鼎卦初六,命中次数:2910,占比0.0003%
天山遁卦初六,命中次数:2917,占比0.0003%
天山遁卦六二,命中次数:2934,占比0.0003%
泽风大过卦初六,命中次数:2980,占比0.0003%
天火同人卦六二,命中次数:3569,占比0.0004%
天泽履卦六三,命中次数:6272,占比0.0006%
风天小畜卦六四,命中次数:8931,占比0.0009%
风火家人卦六二,命中次数:10318,占比0.0010%
离为火卦六二,命中次数:10434,占比0.0010%
天雷无妄卦六二,命中次数:10499,占比0.0010%
天雷无妄卦六三,命中次数:10525,占比0.0011%
泽火革卦六二,命中次数:10597,占比0.0011%
天水讼卦六三,命中次数:10655,占比0.0011%
火天大有卦六五,命中次数:11558,占比0.0012%
泽天夬卦上六,命中次数:14247,占比0.0014%
火山旅卦初六,命中次数:14831,占比0.0015%
风山渐卦初六,命中次数:14887,占比0.0015%
天地否卦六二,命中次数:14960,占比0.0015%
天地否卦初六,命中次数:14962,占比0.0015%
泽山咸卦六二,命中次数:14984,占比0.0015%
泽水困卦初六,命中次数:14985,占比0.0015%
山风蛊卦初六,命中次数:15029,占比0.0015%
泽山咸卦初六,命中次数:15041,占比0.0015%
火水未济卦初六,命中次数:15063,占比0.0015%
雷风恒卦初六,命中次数:15064,占比0.0015%
风水涣卦初六,命中次数:15095,占比0.0015%
火山旅卦六二,命中次数:15103,占比0.0015%
风山渐卦六二,命中次数:15116,占比0.0015%
水风井卦初六,命中次数:15131,占比0.0015%
天地否卦六三,命中次数:15285,占比0.0015%
火泽睽卦六三,命中次数:17990,占比0.0018%
风泽中孚卦六四,命中次数:17992,占比0.0018%
风泽中孚卦六三,命中次数:18055,占比0.0018%
风火家人卦六四,命中次数:18101,占比0.0018%
巽为风卦六四,命中次数:18148,占比0.0018%
兑为泽卦六三,命中次数:18169,占比0.0018%
山天大畜卦六五,命中次数:25586,占比0.0026%
火风鼎卦六五,命中次数:25597,占比0.0026%
水天需卦六四,命中次数:25661,占比0.0026%
火泽睽卦六五,命中次数:25678,占比0.0026%
山天大畜卦六四,命中次数:25716,占比0.0026%
离为火卦六五,命中次数:25805,占比0.0026%
乾为天卦初九,命中次数:26199,占比0.0026%
泽火革卦上六,命中次数:33050,占比0.0033%
泽风大过卦上六,命中次数:33128,占比0.0033%
水天需卦上六,命中次数:33354,占比0.0033%
雷天大壮卦上六,命中次数:33480,占比0.0033%

从文王做卦后,周公旦就做了很多修改。从“武人为之大君”,“康侯用锡马蕃庶“等词汇也能看出,周宣王时期之后依然也有新的编辑,而后孔子及其儒家弟子所做【传】时,对原来的【经】也未必原封不动。我认为古人虽然不会计算的如此精确,但对高频出现的爻辞如果不适合必然会加以修正,亦或者朱熹在整理解卦方法时,也会带有相应的考量。注意,朱熹记载的解卦法是由朱熹和他的学生蔡元定基于古代文献整理归纳而出的,而不是自己编的,所以不能说这套解卦理论产于宋代。其也是从更早的时代流传下来的。

我们看一下这些高频出现的爻辞,寻找其是否有些关联性:

首先坤卦整体都是柔顺厚德载物之象,也是为臣为辅之道,除了上六物极必反,其他爻辞大体都是好的,至少是无咎。而【龙战于野,其血玄黄】的上六概率却非常低,因为要得坤卦上六的话,除了888889有0.6%的概率,其他的爻中都必须带6,而取6这个数是很难的,相当于每次左右手分蓍草的结果都要整除4。888886的概率只有0.017%,而【886886,888866,868886,888686,688886】都只有0.0006%的概率。

剩下的高频卦爻以一阳五阴的组合为主,那可想而知,这个阳爻的爻辞还差的了吗?

地雷复卦初九:不复远,无祗悔,元吉

地水师卦九二:在师中,吉无咎,王三锡命

地山谦卦九三:劳谦君子,有终吉

雷地豫卦九四:由豫,大有得。勿疑。朋盍簪。

水地比卦九五:显比,王用三驱,失前禽。邑人不诫,

那么这就很清晰了,按照这种卜卦方法,得以吉的概率很大。所以说,大家占卜完全不用慌,大概率都是好的,就当听吉祥话了,哈哈。

最后附上完整代码:

const G8map = {"111": {"name": "乾","index": 7,"nature": "天"},"000": {"name": "坤","index": 0,"nature": "地"},"001": {"name": "震","index": 4,"nature": "雷"},"110": {"name": "巽","index": 3,"nature": "风"},"010": {"name": "坎","index": 2,"nature": "水"},"101": {"name": "离","index": 5,"nature": "火"},"100": {"name": "艮","index": 1,"nature": "山"},"011": {"name": "兑","index": 6,"nature": "泽"},
}
const G64_name = ["乾为天卦", "坤为地卦", "屯卦", "蒙卦", "需卦", "讼卦", "师卦", "比卦","小畜卦", "履卦", "泰卦", "否卦", "同人卦", "大有卦", "谦卦", "豫卦","随卦", "蛊卦", "临卦", "观卦", "噬嗑卦", "贲卦", "剥卦", "复卦","无妄卦", "大畜卦", "颐卦", "大过卦", "坎为水卦", "离为火卦", "咸卦", "恒卦","遁卦", "大壮卦", "晋卦", "明夷卦", "家人卦", "睽卦", "蹇卦", "解卦","损卦", "益卦", "夬卦", "姤卦", "萃卦", "升卦", "困卦", "井卦","革卦", "鼎卦", "震为雷卦", "艮为山卦", "渐卦", "归妹卦", "丰卦", "旅卦","巽为风卦", "兑为泽卦", "涣卦", "节卦", "中孚卦", "小过卦", "既济卦", "未济卦"
]
const yao_name_0 = ['初六', '六二', '六三', '六四', '六五', '上六']
const yao_name_1 = ['初九', '九二', '九三', '九四', '九五', '上九']const G64_index = [[+1, 14, +6, 45, 23, 35, 18, 10], // 地[22, 51, +3, 17, 26, 21, 40, 25], // 山[+7, 38, 28, 47, +2, 62, 59, +4], // 水[19, 52, 58, 56, 41, 36, 60, +8], // 风[15, 61, 39, 31, 50, 54, 53, 33], // 雷[34, 55, 63, 49, 20, 29, 37, 13], // 火[44, 30, 46, 27, 16, 48, 57, 42], // 泽[11, 32, +5, 43, 24, 12, +9, +0], // 乾//[地, 山, 水, 风, 雷, 火, 泽, 乾]
]
const statistics = {describe: {},remainder: {},result: {},change_count: {0: 0,1: 0,2: 0,3: 0,4: 0,5: 0,6: 0,}
}
// 获取64卦上下卦
function get_G64_iter(Gid) {for (let i = 0; i < 8; i++) {for (let j = 0; j < 8; j++) {if (Gid === G64_index[i][j]) {return { shang: i, xia: j }}}}
}
// 获取八卦信息
function get_G8_info(index) {for (const key in G8map) {const info = G8map[key]if (info.index === index) {return info}}
}
// 测试用输出64卦名
function output_G64_name() {for (let iter = 0; iter < G64_name.length; iter++) {const { shang, xia } = get_G64_iter(iter)if (shang === xia) {console.log(`${G64_name[iter]}`)} else {console.log(`${get_G8_info(shang).nature}${get_G8_info(xia).nature}${G64_name[iter]}`)}}
}
// 根据六爻获取卦名
function get_G64_name_by_str(str) {const shang_key = str.slice(0, 3)const xia_key = str.slice(3, 6)const shang = G8map[shang_key].indexconst xia = G8map[xia_key].indexconst Gid = G64_index[shang][xia]if (shang === xia) {return `${G64_name[Gid]}`} else {return `${get_G8_info(shang).nature}${get_G8_info(xia).nature}${G64_name[Gid]}`}
}
// 获取单个爻辞
const used_count = 49 // 大衍之数五十,其用四十有九。
function get_yao() {let remainder = used_countfor (let i = 0; i < 3; i++) {remainder-- // 挂一以象三let min_count = 0;min_count = Math.floor(remainder / 5)// 按照常理来说一分为二大家趋近于平衡,至少不低于总数20%,很少某一边就留下1根另外一边很多,不然这就是完全可控的结果了,是为不诚。这行去掉也不太影响结果。const left = Math.floor(Math.random() * (remainder - min_count * 2)) + min_count// 分而为二以象两const right = remainder - leftconst left_cost = left % 4 || 4 // 揲之以四以象四时,归奇于扐以象闰const right_cost = right % 4 || 4// 五岁再闰,故再扐而后挂remainder = remainder - left_cost - right_cost + 1}remainder--if (statistics.remainder[remainder]) {statistics.remainder[remainder]++} else {statistics.remainder[remainder] = 1}return remainder / 4
}
// 朱熹解卦法
function zhuxi_jie(ben_G_name, zhi_G_name, change_count, yao_arr) {/*1、六爻皆不变者,则占本卦卦辞;2、一爻变者,则以本卦变爻之辞占;3、二爻变者,则以本卦二变爻之辞占,而以上爻之辞为主;4、三爻变者,则占本卦及之卦的卦辞,而以本卦为主;5、四爻变者,则以之卦中二不变之爻辞占,以下爻之辞为主;6、五爻变者,则以之卦中不变爻的爻辞占;7、六爻皆变者,则以乾坤二用之辞占,并参考其之卦卦辞。*/switch (change_count) {case 0:case 3:return `${ben_G_name}卦辞`case 1:case 2:for (let i = yao_arr.length - 1; i >= 0; i--) {if (yao_arr[i] === 6) {return `${ben_G_name}${yao_name_0[i]}`}if (yao_arr[i] === 9) {return `${ben_G_name}${yao_name_1[i]}`}}break;case 4:case 5:for (let i = 0; i < yao_arr.length; i++) {if (yao_arr[i] === 7) {return `${zhi_G_name}${yao_name_1[i]}`}if (yao_arr[i] === 8) {return `${zhi_G_name}${yao_name_0[i]}`}}break;case 6:return `${zhi_G_name}卦辞`default:console.log("error change_count::", ben_G_name, zhi_G_name, change_count, yao_arr)break;}
}
const reuslt_cache = {}
// 大衍筮法
function DYSF() {let ben_G_str = '';let zhi_G_str = '';let change_count = 0const yao_arr = new Array()// 6,7,8,9let yao_str = ''for (let i = 0; i < 6; i++) {const y = get_yao()yao_arr.push(y)yao_str += y.toString()}// console.log("占得六爻为:", yao_arr)for (let i = yao_arr.length - 1; i >= 0; i--) {switch (yao_arr[i]) {case 6:ben_G_str += '0'zhi_G_str += '1'change_count++break;case 7:ben_G_str += '1'zhi_G_str += '1'break;case 8:ben_G_str += '0'zhi_G_str += '0'break;case 9:ben_G_str += '1'zhi_G_str += '0'change_count++break;default:console.log("error yao_arr::", yao_arr[i])break;}}const ben_G_name = get_G64_name_by_str(ben_G_str)const zhi_G_name = get_G64_name_by_str(zhi_G_str)let describeif (reuslt_cache[yao_str]) {describe = reuslt_cache[yao_str]} else {describe = zhuxi_jie(ben_G_name, zhi_G_name, change_count, yao_arr)reuslt_cache[yao_str] = describe}// console.log(`本卦:${ben_G_name},之卦${zhi_G_name},应参考${describe},变爻数${change_count}`)return { describe, change_count, yao_str }
}const run_count = 10000 * 10000 * 10
function run() {for (let i = 0; i < run_count; i++) {const { describe, change_count, yao_str } = DYSF()if (statistics.describe[describe]) {statistics.describe[describe]++} else {statistics.describe[describe] = 1}if (statistics.result[yao_str]) {statistics.result[yao_str]++} else {statistics.result[yao_str] = 1}statistics.change_count[change_count]++if (i && i % 10000000 === 0) {console.log(`进度${i / run_count * 100}%`)}}const describe_sort_arr = Object.keys(statistics.describe).map((key) => {return {describe: key,count: statistics.describe[key]}})describe_sort_arr.sort((itemA, itemB) => {return itemB.count - itemA.count;});const result_sort_arr = Object.keys(statistics.result).map((key) => {return {result: key,count: statistics.result[key]}})result_sort_arr.sort((itemA, itemB) => {return itemB.count - itemA.count;});console.log("占卜单爻统计:")for (const k in statistics.remainder) {console.log(`触发剩余${k / 4}堆的次数:${statistics.remainder[k]},占比${(statistics.remainder[k] / (run_count * 6) * 100).toFixed(4)}%`)}console.log("变爻数量统计:")for (const k in statistics.change_count) {console.log(`触发变爻${k}个的次数:${statistics.change_count[k]},占比${(statistics.change_count[k] / run_count * 100).toFixed(4)}%`)}console.log(`最高频率出现的六爻组合:`)for (let i = 0; i < result_sort_arr.length; i++) {console.log(`${result_sort_arr[i].result},对应的是${reuslt_cache[result_sort_arr[i].result]},命中次数:${result_sort_arr[i].count},占比${(result_sort_arr[i].count / run_count * 100).toFixed(4)}%`)}const count = 50console.log(`全部结果数量为${describe_sort_arr.length},最容易命中的前${count}爻:`)for (let i = 0; i < count; i++) {console.log(`${describe_sort_arr[i].describe},命中次数:${describe_sort_arr[i].count},占比${(describe_sort_arr[i].count / run_count * 100).toFixed(4)}%`)}console.log(`最不容易命中的前${count}爻:`)for (let i = 0; i < count; i++) {console.log(`${describe_sort_arr[describe_sort_arr.length - 1 - i].describe},命中次数:${describe_sort_arr[describe_sort_arr.length - 1 - i].count},占比${(describe_sort_arr[describe_sort_arr.length - 1 - i].count / run_count * 100).toFixed(4)}%`)}
}
run()

另外,如果采用金钱卦的方法,相对阴阳爻就比较平衡了,且因为78出现的次数多,所以大概率都是取某一个卦的全卦卦辞做解卦。而初九初六的爻辞会很难获得。

//金钱卦
function get_yao_gold() {let sum = 0;for (let i = 0; i < 3; i++) {sum += Math.round(Math.random())}let result = 0;switch (sum) {case 0:result= 6;break;case 1:result= 7;break;case 2:result= 8;break;case 3:result= 9;break;default:console.log("error get_yao_gold::",sum)break;}if (statistics.remainder[result]) {statistics.remainder[result]++} else {statistics.remainder[result] = 1}return result}
占卜单爻统计:
触发剩余6堆的次数:750737,占比12.5123%
触发剩余7堆的次数:2249790,占比37.4965%
触发剩余8堆的次数:2249643,占比37.4941%
触发剩余9堆的次数:749830,占比12.4972%
变爻数量统计:
触发变爻0个的次数:177916,占比17.7916%
触发变爻1个的次数:355606,占比35.5606%
触发变爻2个的次数:297151,占比29.7151%
触发变爻3个的次数:131589,占比13.1589%
触发变爻4个的次数:33048,占比3.3048%
触发变爻5个的次数:4440,占比0.4440%
触发变爻6个的次数:250,占比0.0250%
最高频率出现的六爻组合:
788888,对应的是地雷复卦卦辞,命中次数:2898,占比0.2898%
777787,对应的是火天大有卦卦辞,命中次数:2876,占比0.2876%
778778,对应的是兑为泽卦卦辞,命中次数:2874,占比0.2874%
878778,对应的是泽水困卦卦辞,命中次数:2871,占比0.2871%
887887,对应的是艮为山卦卦辞,命中次数:2870,占比0.2870%
888877,对应的是风地观卦卦辞,命中次数:2856,占比0.2856%
777777,对应的是乾为天卦卦辞,命中次数:2849,占比0.2849%
787878,对应的是水火既济卦卦辞,命中次数:2844,占比0.2844%
887888,对应的是地山谦卦卦辞,命中次数:2843,占比0.2843%
787787,对应的是离为火卦卦辞,命中次数:2842,占比0.2842%
877777,对应的是天风姤卦卦辞,命中次数:2835,占比0.2835%
877887,对应的是山风蛊卦卦辞,命中次数:2835,占比0.2835%
788788,对应的是震为雷卦卦辞,命中次数:2829,占比0.2829%
788887,对应的是山雷颐卦卦辞,命中次数:2822,占比0.2822%
877788,对应的是雷风恒卦卦辞,命中次数:2821,占比0.2821%
878877,对应的是风水涣卦卦辞,命中次数:2812,占比0.2812%
887788,对应的是雷山小过卦卦辞,命中次数:2808,占比0.2808%
787777,对应的是天火同人卦卦辞,命中次数:2806,占比0.2806%
778788,对应的是雷泽归妹卦卦辞,命中次数:2802,占比0.2802%
877877,对应的是巽为风卦卦辞,命中次数:2799,占比0.2799%
全部结果数量为448,最容易命中的前50爻:
地雷复卦卦辞,命中次数:4985,占比0.4985%
风地观卦卦辞,命中次数:4981,占比0.4981%
山风蛊卦卦辞,命中次数:4956,占比0.4956%
泽水困卦卦辞,命中次数:4956,占比0.4956%
震为雷卦卦辞,命中次数:4938,占比0.4938%
乾为天卦卦辞,命中次数:4933,占比0.4933%
艮为山卦卦辞,命中次数:4928,占比0.4928%
水火既济卦卦辞,命中次数:4925,占比0.4925%
离为火卦卦辞,命中次数:4924,占比0.4924%
雷山小过卦卦辞,命中次数:4920,占比0.4920%
火天大有卦卦辞,命中次数:4915,占比0.4915%
泽天夬卦卦辞,命中次数:4913,占比0.4913%
雷风恒卦卦辞,命中次数:4911,占比0.4911%
山雷颐卦卦辞,命中次数:4909,占比0.4909%
风泽中孚卦卦辞,命中次数:4890,占比0.4890%
地山谦卦卦辞,命中次数:4885,占比0.4885%
兑为泽卦卦辞,命中次数:4880,占比0.4880%
天风姤卦卦辞,命中次数:4880,占比0.4880%
泽山咸卦卦辞,命中次数:4878,占比0.4878%
地风升卦卦辞,命中次数:4876,占比0.4876%
巽为风卦卦辞,命中次数:4875,占比0.4875%
水山蹇卦卦辞,命中次数:4873,占比0.4873%
天泽履卦卦辞,命中次数:4872,占比0.4872%
天火同人卦卦辞,命中次数:4870,占比0.4870%
泽雷随卦卦辞,命中次数:4864,占比0.4864%
天雷无妄卦卦辞,命中次数:4861,占比0.4861%
雷水解卦卦辞,命中次数:4860,占比0.4860%
火水未济卦卦辞,命中次数:4858,占比0.4858%
火风鼎卦卦辞,命中次数:4855,占比0.4855%
地天泰卦卦辞,命中次数:4854,占比0.4854%
地泽临卦卦辞,命中次数:4848,占比0.4848%
泽地萃卦卦辞,命中次数:4840,占比0.4840%
天地否卦卦辞,命中次数:4838,占比0.4838%
风水涣卦卦辞,命中次数:4837,占比0.4837%
天水讼卦卦辞,命中次数:4833,占比0.4833%
雷火丰卦卦辞,命中次数:4831,占比0.4831%
山天大畜卦卦辞,命中次数:4828,占比0.4828%
泽风大过卦卦辞,命中次数:4824,占比0.4824%
坤为地卦卦辞,命中次数:4820,占比0.4820%
水天需卦卦辞,命中次数:4819,占比0.4819%
水泽节卦卦辞,命中次数:4814,占比0.4814%
火泽睽卦卦辞,命中次数:4813,占比0.4813%
地火明夷卦卦辞,命中次数:4804,占比0.4804%
风雷益卦卦辞,命中次数:4804,占比0.4804%
天山遁卦卦辞,命中次数:4803,占比0.4803%
水雷屯卦卦辞,命中次数:4802,占比0.4802%
火山旅卦卦辞,命中次数:4795,占比0.4795%
山地剥卦卦辞,命中次数:4790,占比0.4790%
水风井卦卦辞,命中次数:4790,占比0.4790%
火地晋卦卦辞,命中次数:4787,占比0.4787%
最不容易命中的前50爻:
水地比卦初六,命中次数:1036,占比0.1036%
天风姤卦初六,命中次数:1051,占比0.1051%
坤为地卦初六,命中次数:1056,占比0.1056%
雷山小过卦初六,命中次数:1057,占比0.1057%
天地否卦初六,命中次数:1059,占比0.1059%
地风升卦初六,命中次数:1061,占比0.1061%
水泽节卦初九,命中次数:1061,占比0.1061%
天山遁卦初六,命中次数:1064,占比0.1064%
雷地豫卦初六,命中次数:1068,占比0.1068%
山火贲卦初九,命中次数:1068,占比0.1068%
雷火丰卦初九,命中次数:1070,占比0.1070%
水风井卦初六,命中次数:1082,占比0.1082%
艮为山卦初六,命中次数:1084,占比0.1084%
火水未济卦初六,命中次数:1085,占比0.1085%
兑为泽卦初九,命中次数:1088,占比0.1088%
雷水解卦初六,命中次数:1089,占比0.1089%
天水讼卦初六,命中次数:1089,占比0.1089%
水雷屯卦初九,命中次数:1090,占比0.1090%
火雷噬嗑卦初九,命中次数:1091,占比0.1091%
风水涣卦初六,命中次数:1095,占比0.1095%
坎为水卦初六,命中次数:1097,占比0.1097%
泽水困卦初六,命中次数:1098,占比0.1098%
离为火卦初九,命中次数:1101,占比0.1101%
地天泰卦初九,命中次数:1103,占比0.1103%
乾为天卦初九,命中次数:1103,占比0.1103%
山雷颐卦初九,命中次数:1104,占比0.1104%
巽为风卦初六,命中次数:1105,占比0.1105%
水火既济卦初九,命中次数:1106,占比0.1106%
火天大有卦初九,命中次数:1108,占比0.1108%
山水蒙卦初六,命中次数:1109,占比0.1109%
风泽中孚卦初九,命中次数:1110,占比0.1110%
火泽睽卦初九,命中次数:1111,占比0.1111%
地火明夷卦初九,命中次数:1112,占比0.1112%
水山蹇卦初六,命中次数:1114,占比0.1114%
天雷无妄卦初九,命中次数:1115,占比0.1115%
泽火革卦初九,命中次数:1116,占比0.1116%
山地剥卦初六,命中次数:1120,占比0.1120%
雷风恒卦初六,命中次数:1123,占比0.1123%
山风蛊卦初六,命中次数:1123,占比0.1123%
地山谦卦初六,命中次数:1126,占比0.1126%
水天需卦初九,命中次数:1126,占比0.1126%
风山渐卦初六,命中次数:1127,占比0.1127%
雷天大壮卦初九,命中次数:1127,占比0.1127%
泽雷随卦初九,命中次数:1129,占比0.1129%
雷泽归妹卦初九,命中次数:1130,占比0.1130%
天火同人卦初九,命中次数:1131,占比0.1131%
山天大畜卦初九,命中次数:1136,占比0.1136%
泽地萃卦初六,命中次数:1138,占比0.1138%
泽天夬卦初九,命中次数:1139,占比0.1139%
地水师卦初六,命中次数:1140,占比0.1140%

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决云服务连接时长过短,不到一会儿自动断开

我们在使用xshell或者FinalShell连接云服务器操作时&#xff0c;总是十分钟就自动断开&#xff0c;很烦&#xff0c; 下面我们设置一下&#xff0c;让他可以使用很长时间&#xff08;需要有一定的linux命令的基础&#xff09; cd /etc/ssh 进入到ssh这个目录&#xff0c;查看…

k8s ingress

一、浅谈ingress &#xff08;ingress 是与service配合使用的&#xff09; Ingress能把Service&#xff08;Kubernetes的服务&#xff09;配置成外网能够访问的URL&#xff0c;流量负载均衡&#xff0c;及SSL&#xff0c;并提供域名访问的虚拟主机等&#xff0c;客户通过访问UR…

万界星空科技/免费MES系统/免费质量检测系统

质量管理也是万界星空科技免费MES中的一个重要组成部分&#xff0c;旨在帮助制造企业实现全面的质量管理。该系统涵盖了供应商来料、生产过程、质量检验、数据分析等各个环节&#xff0c;为企业提供了一站式的质量管理解决方案。 1. 实时质量监控 质量管理能够实时监控生产过程…

【使用 k 折叠交叉验证的卷积神经网络(CNN)】基于卷积神经网络的无特征EMG模式识别研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

攻防世界-warmup

原题解题思路 只有一张图片&#xff0c;就查看源代码&#xff0c;有一个source.php。 查看source.php&#xff0c;白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的&#xff0c;构造payload。 http://61.147.171.105:55725/sourc…

JS逆向-某招聘平台token

前言 本文是该专栏的第56篇,后面会持续分享python爬虫干货知识,记得关注。 通常情况下,JS调试相对方便,只需要chrome或者一些抓包工具,扩展插件,就可以顺利完成逆向分析。目前加密参数的常用逆向方式大致可分为以下几种,一种是根据源码的生成逻辑还原加密代码,一种是补…

阿里云使用WordPress搭建个人博客

手把手教你使用阿里云服务器搭建个人博客 一、免费创建服务器实例 1.1 点击试用 点击试用会需要你创建服务器实例&#xff0c;直接选择默认的操作系统即可&#xff0c;点击下一步 1.2 修改服务器账号密码 二、创建云数据库实例 2.1 免费获取云数据库使用 2.2 实例列表页 在…

PHP自己的框架实现debug调试模式和时区(完善篇三)

1、实现效果通过config设置开关debug调试模式 2、debug调试模式设置和时区设置 error_reporting和display_errors点击查看详细讲解 public static function run(){//定义常量self::_set_const();//创建模块目录self::_mk_module();//加载文件self::_import_file();self::_set_…

LVS+Keepalived集群

目录 Keepalived Keepalived概述 Keepalived 工作原理 主要模块及其作用 LVSKeepalived 高可用群集搭建 所需服务器 配置负载调度器 配置keeplived 启动 ipvsadm 服务 调整 proc 响应参数&#xff0c;关闭Linux 内核的重定向参数响应 配置节点服务器 测试验证 Keepa…

交换机生成树STP

生成树协议&#xff08;spanning-tree-protocol,stp&#xff09;&#xff1a;在具有物理环路的交换机网络上生成没有回路的逻辑网络的方法&#xff0c;生成树协议使用生成树算法&#xff0c;在一个具有冗余路径的容错网络中计算出一个无环路的路径&#xff0c;使一部分端口处于…

VR全景加盟项目如何开展?如何共赢VR时代红利?

VR全景作为一个新兴蓝海项目&#xff0c;相信有着很多人刚接触VR行业的时候都会有这样的疑问&#xff1a;VR全景加盟后项目如何开展&#xff1f;今天&#xff0c;我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去&#xff0c;学校、…

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

视频效果&#xff1a;变压器三种方法下故障诊断Python代码_哔哩哔哩_bilibili代码运行要求&#xff1a;tensorflow版本>2.4.0,Python>3.6.0即可&#xff0c;无需修改数据路径。 1.数据集介绍&#xff1a; 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。…

Ubuntu20.04安装SNMP服务

在线安装snmp 1.安装snmp服务 sudo apt-get install updatesudo apt-get install snmp snmpd snmp-mibs-downloader2.重启SNMP服务 sudo /etc/init.d/snmpd restart3.查看snmp配置 sudo grep -Ev ^$|^# /etc/snmp/snmpd.conf 离线安装SNMP &#xff08;重要&#xff09; 我…

Django基础1——项目实现流程

文章目录 一、前提了解二、准备开发环境2.1 创建项目2.1.1 pycharm创建2.1.2 命令创建 2.2 创建应用 例1&#xff1a;效果实现例2&#xff1a;网页展示日志文件 一、前提了解 基本了解&#xff1a; 官网Django是Python的一个主流Web框架&#xff0c;提供一站式解决方案&#xf…

8.部署项目

项目地址&#xff1a;RuoYi-Cloud-Plus: 项目正式入驻 dromara 开源社区 迁移地址: https://gitee.com/dromara/RuoYi-Cloud-Plus 1.获取源码 需要有gitee账户 先把源码fork到自己的仓库中 需要多等待一段时间 勾选对应的环境 构建项目 2.sql导入 将sql导入到与sql文件名…

# 电脑好用的工具推荐

电脑好用的工具推荐 文章目录 电脑好用的工具推荐必装工具浏览器火绒安全卸载工具Geek迅雷 记笔记工具Typora印象笔记 开发工具IntelliJ IDEAVisual Studio CodeDbeaverAnother Redis Desktop Manager 备份工具百度网盘阿里云盘一刻相册蓝奏云 必装工具 浏览器 就别装那些乱七…

https非对称加密算法

非对称加密算法原理 在客户端公开公钥&#xff0c;服务端保存私钥 1.客户端第一次请求先请求443端口&#xff0c;从443端口下载公钥。 2.客户端将数据进行公钥算法进行加密&#xff0c;将秘文发送到服务端 服务端收到秘文后&#xff0c;通过私钥算法进行解密得到明文数据。…

cuda gdb调试

如果cudaDeviceEnablePeerAccess函数不支持或不起作用&#xff0c;您仍然可以尝试其他方法来实现GPU之间的数据交换和通信。以下是一些替代方法&#xff1a; 通过主机内存进行数据传输&#xff1a; 如果GPU之间的数据交换不是非常频繁&#xff0c;您可以将数据从一个GPU复制到…

《Linux从练气到飞升》No.16 Linux 进程地址空间

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

【NepCTF2023】复现

文章目录 【NepCTF2023】复现MISC与AI共舞的哈夫曼codesc语言获取环境变量 小叮弹钢琴陌生的语言你也喜欢三月七么Ez_BASIC_IImisc参考 WEBez_java_checkinPost Crad For You独步天下配置环境独步天下-镜花水月环境变量提权 独步天下-破除虚妄总结 独步天下-破除试炼_加冕成王知…