梅花易数三位数起卦法 基于Python的科学占卜工具开发过程
目录 背景 前置知识 基础知识 如何生成卦 开发源码背景
长期以来,中国的占卜都是靠算命的手工实现,手续繁琐(经常需要洗澡、算天气、打坐等)。准备工作复杂(通常需要铜币等道具),计算方法复杂,需要手动计算二进制并转换成最终的卦。为了解决这个问题,作者实现了一套快速占卜的科学算命工具
本文的算命方法由八卦+周易+梅花易书实现,脚本基于.9.0开发。本人对周易五行的研究比较浅,如有疏漏,敬请见谅。
最终效果如图。程序运行后,会根据当前运势自动获取你所想的卦(本卦、互卦、变卦)。
必备知识基础
首先,我们需要了解一些基本的占卜知识。目前我国几种主流的占卜方法梅花易数三位数起卦法,基本都是以易进化为主。一般来说,根据某种现象得到不同的卦,不同的卦最终将代表占卜的开始、发展和结果。
太极生二法,二法生四象,四象生八卦
相信大家在很多影视作品中都听说过这句话梅花易数三位数起卦法,但很少有人知道它的真正含义。这句话其实概括了卦的生成过程。
太极:它代表一种绝对混乱的状态。这是一个哲学概念。它必须应用于我们的客观世界。可以理解为宇宙大爆炸前的状态。所有的物理定律都不会生效。这种状态。良一:也是一个哲学概念,代表一个事物的两种相反的状态。应用于客观世界时梅花易数三位数起卦法 基于Python的科学占卜工具开发过程,可以是“生死”、“黑白”、“清浊”。在占卜的过程中,我们通常会出现“阴阳”两种状态。为了记录方便,古人发明了两种符号来代表这两种状态。占卜时,我们称这样一种状态为要(yao)。
四象:当我们将阴阳配对时,我们可以得到四种不同的组合。古人称其为四象。请注意,这里的四个图像也是哲学的。,也可以是东、西、西北四个方向。占卜时,我们通常用“太阴”、“少阴”、“太阳”、“少阳”来称呼这四象。
八卦:四象相加一行,即三阴阳合,可得八合。古人认为,这八种组合可以代表自然界中的八种事物(八种状态),即八卦
当然,八国不足以代表事物的发展方向,所以古人将八卦(个别八卦称为景卦)成对组合,产生了64个不同的其他卦,即《易经》中的六卦。十四卦就是这样产生的
目前中国的主流占卜基本上是通过不同的取数方式得到不同的卦,最后判断事物的走向。其实对于程序员来说,两米可以看成是一位二进制数,有两种状态0、1。四象是两位二进制数,有00、01、10、11四种状态。八卦是三位二进制数,包括000、001、010、011、@ >100、101、110、111 个状态
如何生成六角星
现在我们知道了卦是如何演化的,但是我们还没有能够得到卦的方式。其实,在占卜的过程中,不同的占卜方式最大的区别就是起卦的方式不同。卦的方式
梅花易数卦法(这里只截取两种卦法)
一、 年、月、日、时、卦:
即农历年月日之和除以八,余数为卦数,求上卦;年、月、日之和除以八,余数为卦数,求出下卦,再将年月日之和除以六。,余数为移动线。
例:卦开始于农历人申年四月十一日:申年九数,四时六数。
上卦为:(年+月+日)÷8,取余数。即:(9+4+11)÷8,这里没有余数。
下卦为:(年+月+日+时)÷8,取余数。即:(9+4+11+6)÷8,余数为6为看卦。
移动线数为:(年+月+日+小时)÷6梅花易数三位数起卦法,取余数。即:(9+4+11+6)除以6,这里没有余数。
此卦为:上卦为坤,下卦为堪,动线为上行。
二、 直接算卦
这是一种简单而准确的制作卦的方法。当有人要求量某物时,你可以让他随意说出两个数字,第一个数字为上卦,第二个数字为下卦,两个数字之和除以6,其余的是移动线。或者你可以使用其他可以得到两个数字的方法来开始卦,比如翻书、日历等。
开发
让我们用程序员的话来总结一下梅花易书的过程。流程如下
获取一个随机数(我们这里使用当前时间戳)取8为模,作为上链(三位二进制数)再取一个随机数梅花易数三位数起卦法 基于Python的科学占卜工具开发过程,取8取模,作为下链接(一个三位二进制数)将上述两个随机数组合起来,得到一个六位二进制数。将六位二进制数转换为十进制数,查表得到这个卦的随机数。变1,1变0,再转成十进制数查表得到运势变化
import json import random import time #别挂配置数据 gua_data_path = "data.json" #别卦数据 gua_data_map = { } fake_delay = 10 #读取别卦数据 def init_gua_data(json_path): with open(gua_data_path,'r',encoding='utf8')as fp: global gua_data_map gua_data_map = json.load(fp) #爻图标映射 yao_icon_map = { 0:"- -", 1:"---" #经卦名 base_gua_name_map = { 0:"坤",1:"震",2:"坎",3:"兑",4:"艮",5:"离",6:"巽",7:"乾" #数字转化为二进制数组 def base_gua_to_yao(gua, yao_length=3): result = [] while gua >= 1: level = 0 if gua % 2 == 0 else 1 gua //= 2 result.append(level) while len(result) < yao_length: result.append(0) return result #二进制数组转化为数字 def base_yao_to_gua(array): array = array[:] while len(array) > 0 and array[-1] == 0: array.pop() result = 0 for i in range(len(array)): if array[i] == 0: continue result += pow(2, i) #打印一个挂 def print_gua(gua): yao_list = base_gua_to_yao(gua, 6) up_yao_list = yao_list[0:3] up = base_yao_to_gua(up_yao_list) print(yao_icon_map[up_yao_list[2]]) print(yao_icon_map[up_yao_list[1]] + " " + base_gua_name_map[up]) print(yao_icon_map[up_yao_list[0]]) print("") down_yao_list = yao_list[3:6] down = base_yao_to_gua(down_yao_list) print(yao_icon_map[down_yao_list[2]]) print(yao_icon_map[down_yao_list[1]] + " " + base_gua_name_map[down]) print(yao_icon_map[down_yao_list[0]]) #使用梅花易数 def calculate_with_plum_flower(): #起上卦 print("使用梅花易数♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️") print_a_wait_animation("卜上卦:", fake_delay) up_base_gua = int(round(time.time() * 1000)) % 8 up_yao_array = base_gua_to_yao(up_base_gua) print("上卦获取成功,上卦为:", base_gua_name_map[up_base_gua]) #起下卦 print_a_wait_animation("正在获取下卦:", fake_delay) down_base_gua = random.randint(0, 999999999999) % 8 down_yao_array = base_gua_to_yao(down_base_gua) print("上卦获取成功,下卦为:", base_gua_name_map[down_base_gua]) #组成卦象 print_a_wait_animation("正在组成本卦:", fake_delay) print("------------------------------------------------本卦------------------------------------------------") yao_list = up_yao_array + down_yao_array gua = base_yao_to_gua(yao_list) print_gua(gua) #读取本卦象信息 gua_code = str(base_gua_name_map[up_base_gua]) + str(base_gua_name_map[down_base_gua]) gua_data = gua_data_map[gua_code] print("本卦为:", gua_data['name']) print("辞:", gua_data['words'],"译:",gua_data['white_words']) print("象:", gua_data['picture'],"译:",gua_data['white_picture']) print_a_wait_animation("正在组成互卦:", fake_delay) print("------------------------------------------------互卦------------------------------------------------") #读取互卦象信息 up_hu_yao_list = [yao_list[4],yao_list[5],yao_list[0]] up_hu_gua = base_yao_to_gua(up_hu_yao_list) down_hu_yao_list =[yao_list[5],yao_list[0],yao_list[1]] down_hu_gua = base_yao_to_gua(down_hu_yao_list) hu_yao_list = up_hu_yao_list + down_hu_yao_list hu_gua = base_yao_to_gua(hu_yao_list) hu_gua_code = str(base_gua_name_map[up_hu_gua]) + str(base_gua_name_map[down_hu_gua]) hu_gua_data = gua_data_map[hu_gua_code] print_gua(hu_gua) print("互卦为:", hu_gua_data['name']) print("辞:", hu_gua_data['words'],"译:",hu_gua_data['white_words']) print("象:", hu_gua_data['picture'],"译:",hu_gua_data['white_picture']) print_a_wait_animation("正在组成变卦:", fake_delay) print("------------------------------------------------变卦------------------------------------------------") change_index = int(round(time.time() * 1000)) % 6 change_yao_list = yao_list[:] change_yao_list[change_index] = 0 if change_yao_list[change_index] == 1 else 1 up_change_yao_list = change_yao_list[0:3] up_change_gua = base_yao_to_gua(up_change_yao_list) down_change_yao_list =change_yao_list[3:5] down_change_gua = base_yao_to_gua(down_change_yao_list) change_gua = base_yao_to_gua(change_yao_list) print_gua(change_gua) change_gua_code = str(base_gua_name_map[up_change_gua]) + str(base_gua_name_map[down_change_gua]) change_gua_data = gua_data_map[change_gua_code] print("变卦为:", change_gua_data['name']) print("辞:", change_gua_data['words'],"译:",change_gua_data['white_words']) print("象:", change_gua_data['picture'],"译:",change_gua_data['white_picture']) def print_a_wait_animation(tips,times): animation = "|/-\\" idx = 0 for i in range(times): print(tips + animation[idx % len(animation)],animation[idx % len(animation)],animation[idx % len(animation)],animation[idx % len(animation)],animation[idx % len(animation)], end="\r"), idx += 1 time.sleep(0.1) init_gua_data(gua_data_path) calculate_with_plum_flower()
源代码
至此,本文就介绍了基于此的科学占卜。更多相关科学占卜,请搜索第一财经站往期文章或继续浏览下方相关文章。希望大家以后多多支持第一财经站。!
标签: 梅花易数 周易占卜