决赛预测
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 datetime
from lunarcalendar import Converter, Solar
class 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):
pass
def get_hexagram(self):
date = datetime.datetime.now()
solar = Solar(date.year, date.month, date.day)
lunar = Converter.Solar2Lunar(solar)
year = (lunar.year - 2019) % 12
month = lunar.month
day = lunar.day
hour = ((date.hour + 1) // 2) % 12 + 1
up_hexagram = ((year + month + day) % 8) or 8
down_hexagram = ((year + month + day + hour) % 8) or 8
yao = ((year + month + day + hour) % 6) or 6
return (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 - 3
hexagram = self.swapped_hexagram_dict.get(up_hexagram)
if yao == 1:
index = 2
elif yao == 2:
index = 1
else:
index = 0
binary_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_hexagram
def 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,得到今年的冠军!