寡人的泡面 发表于 2024-3-12 23:39

一个简单的模拟易经蓍草占卜的python算法

本帖最后由 寡人的泡面 于 2024-3-12 23:43 编辑

科学的尽头是玄学。
电子占卜,赛博算命。
开个玩笑。
最近看了曾仕强老师的视频,实践了蓍草占卜,一次至少30分钟左右。现在时间多么宝贵,于是用python来模拟蓍草占卜的过程。目前只模拟到得六爻成一卦这一步,后续的解卦自行百度。
提示:易经蓍草占卜不是迷信;一事一占。
占卜心中提问方法:尽量不问选择题(是不是,好不好,会不会等等),而是问今后发展的情况。
如:我这篇帖子发出过后,大家的学习热情怎么样?
我们得到一串数列:['6', '8', '9', '7', '8', '8'] ,六爻,6为老阴,7为少阳,8为少阴,9为老阳。
从左开始,从下往上画,七九为阳,六八为阴我们得到此次本卦:小过卦。
但是数列中有老阴或老阳,物极必反,产生变卦,老阴变少阳,老阳变少阴,我们得到此次变卦 震卦
https://attach.52pojie.cn//forum/202403/12/230311ff8fbbpdafofckuh.png?l         https://attach.52pojie.cn//forum/202403/12/231144qkretecuk2cuw0jz.png?l
    (本卦)                           (变卦)
(六爻不变,以本卦卦辞断;一爻变,以本卦变爻爻辞断;两爻变,以本卦两个爻辞断,但以上者为主;三爻变,以本卦与变卦卦辞断;本卦为贞(体),变卦为悔(用);四爻变,以变卦之两不变爻爻辞断,但以下者为主;五爻变,以变卦之不变爻爻辞断;六爻变,以变卦之卦辞断,乾坤两卦则以「用」辞断。)
我们此卦有两个变爻:两爻变,以本卦两个爻辞断,但以上者为主。我们百度小过卦,看初六和九三的爻辞。
初六:《象》中这样解释本爻:“飞鸟以凶”,不可如何也。这里指出:“飞鸟向上强飞将会出现凶险”,是咎由自取,无可奈何。
占得此卦者,要考虑自己的实际能力,在自己能力和学识经验都没有达到一定程度时,不要想从事更高的职位,或者想发大财,这时不要要求太多,可以从身边的小事做起,慢慢地学习,一步一步地来。
九三:《象》中指出:“从或戕之”,凶如何也!这是强调:“将要为人所害”,说明面临的危险是多么的严重啊!占得此爻者,要安于当下的状况,不要因为上面有背景,或有人欣赏自己,就不服不忿,做事不要过度,应时刻警惕有意外之祸危及你。如果你能保持一份清醒,不自恃刚强,不越过中道违背常规,就可免除灾祸。由此次占卜可知,我还需要不停的学习,做事小心谨慎,脚踏实地才行。
(确实如卦象所言,我系初学,交流经验而已,错误之处 还请指正)
接下来 慢慢的尝试界面化,并加入解卦功能。源码如下:

import random
def gua():
    gua1 = []
    for i in range(6):         #六爻成一卦,循环6次
      # 大衍之数五十,其用四十有九。一分为二,以象阴阳。
      yang1 = random.randrange(1, 50)# 阳
      yin1 = 49 - 1 - yang1# 阴 挂一以象三,象征人
      a = yang1 % 4
      b = yin1 % 4
      if (a == 0 and b != 0) or (a != 0 and b == 0):
            c = 4 + a + b + 1
      elif a == 0 and b == 0:
            c = 9
      else:
            c = a + b + 1
      d = 49 - c# 此为一变,d为44或40 两种情况
      yang2 = random.randrange(1, d)
      yin2 = d - 1 - yang2
      e = yang2 % 4
      f = yin2 % 4
      if (e == 0 and f != 0) or (e != 0 and f == 0):
            g = 4 + e + f + 1
      elif e == 0 and f == 0:
            g = 9
      else:
            g = e + f + 1
      h = d - g# 此为二变,h为 40,36,32 三种情况
      yang3 = random.randrange(1, h)
      yin3 = d - 1 - yang3
      i = yang3 % 4
      j = yin3 % 4
      if (i == 0 and j != 0) or (i != 0 and j == 0):
            k = 4 + i + j + 1
      elif i == 0 and j == 0:
            k = 9
      else:
            k = i + j + 1
      l = h - k# 此为三变,l为36,32,28,24四中情况
      yao = str(int(l / 4) ) # 至此,三变成一爻,6为老阴,7为少阳,8为少阴,9为老阳。
      gua1.append(yao)
    print(gua1)
gua()

ileego 发表于 2024-3-13 08:48

在Python中,random模块提供了用于生成伪随机数的函数。这里的“伪随机”是指计算机生成的看起来是随机的数序列,但实际上是可以预测的,只要知道种子(seed)。
如果你需要生成真正的随机数,应该使用os模块提供的urandom()函数,这个函数使用操作系统提供的真随机数生成器。
import os

# 生成一个指定长度的包含随机字节的字符串
random_bytes = os.urandom(10)
print(random_bytes)

# 将字节转换成十六进制表示
print(''.join(f'{c:02x}' for c in random_bytes))

5151diy 发表于 2024-3-13 07:48

用心情+数学 就可以容易理解python 编写程序解决实际问题,谢谢

男牧 发表于 2024-3-13 06:34

偶尔算算不错的哈哈

ljzbox 发表于 2024-3-13 06:31

喜欢这方面的东西

lizy169 发表于 2024-3-13 06:42

代码简单清晰,不错

wxue 发表于 2024-3-13 07:18

玄学的尽头是random

天天哈皮 发表于 2024-3-13 08:09

优秀!!!!

schoolclub 发表于 2024-3-13 08:39

没事可以给自己占上一卦~

yutian0yu 发表于 2024-3-13 08:52

优秀,还能用python来写哲学性的东西。
页: [1] 2 3 4 5
查看完整版本: 一个简单的模拟易经蓍草占卜的python算法