决赛预测
2024英雄联盟全球总决赛
2024年英雄联盟全球总决赛,今天晚上(2024年11月2日22点)就要开始了!今年的总决赛的队伍是BLG与T1。当然一些老的lol玩家,现在可能对于lol关注不多,并不清楚这两个队伍。
其实,T1就是原先的SKTtelecom T1与Comcast合并以后得到的新的俱乐部,而现在T1的主力中单仍然是Faker!而BLG则是Bilibili Gaming,也就是哔哩哔哩的俱乐部。今年最为独特的是,时隔11年,又有“全华班”的队伍,进入到了决赛之中,而遇到的中单却是11年前的老对手Faker。
看过比赛的观众会发现,T1在前几场比赛中,几乎是横扫了对手,展现出了非常强大的实力,就现实情况而言,T1绝对是实力非常强大的对手,甚至很多人,都已经开始想“五冠”的事情了,仿佛这个冠军唾手可得,可以说,BLG的处境不容乐观。
至于对于总决赛的结果预测,这也并非是我自己想的,甚至可以说,是老的传统了。在去年2023年的全球总决赛之前,就有各种各样的“预言家”,根据自己的方法,预测了WBG与T1的比赛结果,众说纷纭。当然,自然是有的人预测对了,有的人预测错了。那么今年同样的,在开赛之前,我准备自己制作一个“预测”程序,来对结果进行预测。
预测方法
要制作预测程序,自然要选择一种预测方法,这次,我要选择的是传统的“梅花易数”的占卜方法。
“梅花”的基本原理是通过“先天八卦数”,进行“起卦”。
然后,通过“卦”,得到卦的五行。
最后,根据五行的生克理论,判断“吉凶祸福”。
这种方法据说是从宋代就已经发明了,距今已经有千年的历史了,因此,接下来,我将通过python编程,还原这种古老的占卜方法,并对2024年英雄联盟全球总决赛的结果,进行预测。
需要注意的是:所有的占卜,预测方法,都是没有任何科学依据的,并不代表真实结果。
梅花易数
起卦
梅花的起卦方式是多种多样的,因此,在这里我们只选择最传统,最可靠的“年月日时”起卦方法,如下所示
这种起卦方式有一个缺点,就是每两小时最多预测一次,因为,每2个小时,卦才会变化一次,如果在短时间内进行多次预测,那么所有结果都是相同的,这显然是不可靠的。所以,该方法进行起卦,不能短时间内连续使用。
而这里用的年月日时,是农历,因此我们需要使用python的lunarcalendar库,如果你不了解的话,可以看看之前的文章,lunarcalendar库的使用
根据干支纪年法,今年2024年是“甲辰年”,其中,在“子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”里面,辰是5,并且每12年,重新计算一轮(其实就是生肖啦)。
年月日时的占卜中,子时的计算通常是一个困难,传统上,子时是一天的开始,但是子时是晚上11点到1点。那么,如果现在是10月1日的晚上11点半,此时,应该算10月1日的子时,还是应该算10月2日的子时呢?
有人认为,如果11点算一天的开始,那么过了11点自然就算是第二天了,因此10月1日的11点半,应该是10月2日。
也有人认为,这种说法是没有道理的,日期更换应该是按照12点来计算,因此,12点以前,应该算10月1日的子时,12点以后,应该算10月2日的子时。
我们这里规定:按照现代的0点进行日期更换,因此,11点半算前一天的子时。
将卦对应到五行
乾是1,五行属金,因此1对应到金。
兑是2,五行属金,因此2对应到金。
离是3,五行属火,因此3对应到火。
震是4,五行属木,因此4对应到木。
巽是5,五行属木,因此5对应到木。
坎是6,五行属水,因此6对应到水。
艮是7,五行属土,因此7对应到土。
坤是8,五行属土,因此8对应到土。
因此,我们得到了对应表:
{1: "金", 2: "金", 3: "火", 4: "木", 5: "木", 6: "水", 7: "土", 8: "土"}
创建卦象
在卦中,有“阳爻”,与“阴爻”,有人说,二进制就是外国人看了我们八卦,才发明出来的。也就是,外国人将阳记做了1,将阴记做了0,因此才有了二进制。
不过,无论外国人看没看过八卦,但是,我们确实可以在程序中用1和0来记录八卦。
hexagram_dict = {"111": 1,"011": 2,"101": 3,"001": 4,"110": 5,"010": 6,"100": 7,"000": 8
}
取体卦与用卦
包含变爻的是用卦,不包含变爻的是体卦。
换而言之,如果爻是1-3,那么上卦是体卦,下卦是用卦。
如果爻是4-6,那么上卦是用卦,下卦是体卦。
取互卦与变卦
首先,我们将上卦与下卦合并为一个“叠卦”,然后取出其中234,与345,得到2个新卦,就是互卦了。
例如111与000,组合成111000,此时,两个互卦分别是110与100。
至于变卦,要根据动爻,对其取反,也就是将1变为0,将0变为1。
处理五行生克
根据五行生克
金生水,水生木,木生火,火生土,土生金。
金克木,木克土,土克水,水克火,火克金。
同样,我们得到了5种关系:生入,生出,克入,克出,比和
其中,比和是一种同类关系,也就是同样的两个元素就是比和。
根据五行生克得到吉凶
生入是大吉
生出是小凶
克入是大凶
克出是小吉
比和是大吉
因此,我们又得到了一个吉凶表:
fortune_dict = {"比和": "大吉","生入": "大吉","生出": "小凶","克入": "大凶","克出": "小吉"
}
python实现
程序实现
import datetimefrom lunarcalendar import Converter, Solarclass MeihuaYi:hexagram_dict = {"111": 1,"011": 2,"101": 3,"001": 4,"110": 5,"010": 6,"100": 7,"000": 8}swapped_hexagram_dict = {value: key for key, value in hexagram_dict.items()}def __init__(self):passdef get_hexagram(self):date = datetime.datetime.now()solar = Solar(date.year, date.month, date.day)lunar = Converter.Solar2Lunar(solar)year = (lunar.year - 2019) % 12month = lunar.monthday = lunar.dayhour = ((date.hour + 1) // 2) % 12 + 1up_hexagram = ((year + month + day) % 8) or 8down_hexagram = ((year + month + day + hour) % 8) or 8yao = ((year + month + day + hour) % 6) or 6return (up_hexagram, down_hexagram, yao)def to_element(self, hexagram):element_dict = {1: "金", 2: "金", 3: "火", 4: "木", 5: "木", 6: "水", 7: "土", 8: "土"}return element_dict[hexagram]def get_mutual_hexagram(self, up_hexagram, down_hexagram):double_hexagram = self.swapped_hexagram_dict[up_hexagram] + self.swapped_hexagram_dict[down_hexagram]mutual_hexagram1 = self.hexagram_dict.get(double_hexagram[1:4])mutual_hexagram2 = self.hexagram_dict.get(double_hexagram[2:5])return (mutual_hexagram1, mutual_hexagram2)def get_changing_hexagram(self, up_hexagram, down_hexagram, yao):if 1 <= yao <= 3:hexagram = self.swapped_hexagram_dict.get(down_hexagram)else:yao = yao - 3hexagram = self.swapped_hexagram_dict.get(up_hexagram)if yao == 1:index = 2elif yao == 2:index = 1else:index = 0binary_list = list(hexagram)if binary_list[index] == "0":binary_list[index] = "1"else:binary_list[index] = "0"changing_hexagram = self.hexagram_dict.get("".join(binary_list))return changing_hexagramdef get_ti_yong_hexagram(self, up_hexagram, down_hexagram, yao):if 1 <= yao <= 3:return (up_hexagram, down_hexagram)else:return (down_hexagram, up_hexagram)def get_relationship(self, element1, element2):generate = {"金": "水","水": "木","木": "火","火": "土","土": "金"}overcome = {"金": "木","木": "土","土": "水","水": "火","火": "金"}if element1 == element2:return "比和"elif generate[element1] == element2:return "生出"elif generate[element2] == element1:return "生入"elif overcome[element1] == element2:return "克出"elif overcome[element2] == element1:return "克入"else:return "无关"def get_good_and_bad(self, relationship):fortune_dict = {"比和": "大吉","生入": "大吉","生出": "小凶","克入": "大凶","克出": "小吉"}return fortune_dict[relationship]def predict(self):# 第零步:询问用户要预测什么?question = input("注意:使用需要至少间隔2小时以上!\n今天你要预测什么:")# 第一步:根据年月日时起卦up_hexagram, down_hexagram, yao = self.get_hexagram()# 第二步:划分体用互变ti, yong = self.get_ti_yong_hexagram(up_hexagram, down_hexagram, yao)hu1, hu2 = self.get_mutual_hexagram(up_hexagram, down_hexagram)bian = self.get_changing_hexagram(up_hexagram, down_hexagram, yao)# 第三步:根据卦得到五行ti_relation = self.to_element(ti)yong_relation = self.to_element(yong)hu1_relation = self.to_element(hu1)hu2_relation = self.to_element(hu2)bian_relation = self.to_element(bian)# 第四步:根据五行得到生克关系start = self.get_relationship(ti_relation, yong_relation)process1 = self.get_relationship(ti_relation, hu1_relation)process2 = self.get_relationship(ti_relation, hu2_relation)result = self.get_relationship(ti_relation, bian_relation)# 第五步:根据生克关系得到吉凶start_condition = self.get_good_and_bad(start)process1_condition = self.get_good_and_bad(process1)process2_condition = self.get_good_and_bad(process2)result_condition = self.get_good_and_bad(result)# 第六步:得出最终结果print(f"当前时间是:{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}")print(f"您要问的问题是:{question}")print(f"现在的当前状况是:{start_condition}")print(f"期间遇到的状况是:{process1_condition},{process2_condition}")print(f"最终的结果是:{result_condition}")if __name__ == "__main__":m = MeihuaYi()m.predict()
预测结果
运行程序后,得到了预测结果,如下所示:
可以看到,当前的状况是大凶,说明,人们对于BLG没有信心,一边倒的看好T1,认为BLG不能赢,此时T1笑的很开心,认为自己已经要赢了。
但是,在比赛过程中,局势发生了改变,反而变成了吉,说明比赛很顺利,暴打了对手。
最终结果为大吉,显而易见,说明了,BLG取得了最终的胜利。
结论:根据程序的预测结果,BLG可以打败T1,得到今年的冠军!