计算生辰八字五行属性的算法

缘起:几年前,小儿出生的几天之内,我需要为他起名字。人生难得接一两回这样的任务,更是格外珍惜。我调研了几种起名字的思路,最终确定按照五行阴阳平衡的道理来确定生辰八字的五行属性,然后选取恰当的字。

说明:本文描述的算法是根据Internet上的资料整理而得到,并非我原创,但个别地方我做过修改。其中经验值的出处已无法找到。

算法的高度足够,我是坐在飞机上写下这一算法描述的,上万米高空俯瞰大地,感觉到一种静默的平衡J。在过去几年中,我用这一算法测算过十多个生辰八字,也碰到过一两个极端的情形,与现实中的表现比较吻合。因此,我相信这算法的结果有参考意义。但是,因使用该算法引起的任何意外事故,我概不负责,请谨慎使用。

算法的过程如下所述:

1.根据出生年月日和时辰,确定八个字,即生辰八字。

查万年历(比如www.),确定前六个字。比如1968年8月8日,查到的结果是:

戊申辛酉壬寅

这六个字分别是年份的天干、地支,月份的天干、地支,和日子的天干、地支。

接下来确定时辰的天干和地支,查下表:

出生钟点

时辰地支

日干(即第5个字)

甲己

乙庚

丙辛

丁壬

戊癸

23-1

1-3

3-5

5-7

7-9

9-11

11-13

13-15

15-17

17-19

19-21

21-23

甲子

乙丑

丙寅

丁卯

戊辰

己巳

庚午

辛未

壬申

癸酉

甲戌

乙亥

丙子

丁丑

戊寅

己卯

庚辰

辛巳

壬午

癸未

甲申

乙酉

丙戌

丁亥

戊子

己丑

庚寅

辛卯

壬辰

癸巳

甲午

乙未

丙申

丁酉

戊戌

己亥

庚子

辛丑

壬寅

癸卯

甲辰

丙午

丁未

戊申

己酉

庚戌

辛亥

壬子

癸丑

甲寅

乙卯

丙辰

丁巳

戊午

己未

庚申

辛酉

壬戌

癸亥

首先根据出生钟点找到相应的行数,再根据第5个字(日干),在右边5列中定位到相应的列,即可得到时辰的天干、地支,即第7、8两个字。譬如,1968年8月8日8点钟,在“7-9”这一行,“丁壬”这一列,得到时辰的干支为“甲辰”,所以,最终的八字为:

戊申辛酉壬寅甲辰

2.计算八字的五行属性。

首先,每个天干和地支都有对应的五行属性,如下面两表所示:

天干属性:

天干

属性

地支属性:

地支

接下来,计算五行“金木水火土”的强度值。对于五行中的每一行,其强度值包括两部分:

l天干强度:即八字中的4个天干,若其五行属性恰好是这一行,那么就有相应的贡献值,可查表如下:

生月\天干

子月

1.2

1.0

丑月

1.06

1.1

1.14

寅月

卯月

辰月

1.04

巳月

午月

未月

1.16

申月

酉月

戌月

亥月

l地支强度:即八字中的4个地支,它们可能会藏了这一五行对应的天干,比如,“丑”藏了“癸、辛、己”,而癸、辛、己的五行属性分别是水、金、土。所以,地支“丑”对水、金、土都有强度贡献,而强度值的大小则取决于相应的月份。下面的表格涵盖了地支所藏的五行强度值。

支藏

月支(即第6个字)

0.36

0.33

0.3

0.312

0.318

0.342

0.2

0.228

0.23

0.212

0.22

0.248

0.232

0.5

0.55

0.53

0.57

0.6

0.58

0.84

0.742

0.798

0.77

0.7

0.728

0.24

0.208

0.348

0.812

0.724

回到前面的例子,八字“戊申辛酉壬寅甲辰”,查以上两表,可以得到五行强度为:

金:0.84(年支藏庚)+1.2(月干)+1.2(月支藏辛)=3.24

木:0.7(日支藏甲)+1.0(时干)+0.3(时支藏乙)=2.0

水:0.36(年支藏壬)+1.2(日干)+0.24(时支藏癸)=1.8

火:0.3(日支藏丙)=0.3

土:1.0(年干)+0.5(时支藏戊)=1.5

3.给出起名指示。

首先确定八字的命里属性。只需查日干的五行属性,即代表了该八字的五行属性。譬如“戊申辛酉壬寅甲辰”的日干“壬”的属性为水,故该八字对应的命里属性为水。

再计算同类和异类的强度值。所谓同类是指,该八字的五行属性,以及生该五行属性的那个属性,譬如八字的五行属性为水,则水和金合起来称为同类,其他三个:木、火和土合起来称为异类。

五行的相生关系为:金生水,水生木,木生火,火生土,土生金。

得到了同类和异类的强度值以后,一个基本的判断是,若两者的数值比较接近,则说明该八字比较平衡,也暗示人生平顺;若两者数值相差较大(比如,大于1,甚至大于2),则说明五行不平衡,可以通过名字来弥补,或者将来找对象时候通过婚姻来补平。

因此,得到同类和异类数值以后,如何确定“用神”或“喜神”,或者,如何在名字中补平,需要一点点人脑智能,目前尚未量化到算法或程序中。回到前面的例子:

日干为壬,属水,故命属水

“同类”数值:5.04

“异类”数值:3.8

“同类”比“异类”数值大,日主强,以火为用神。宜补火。

最后,定下怎么补五行属性以后,剩下就是挑字了,这可以自由发挥了。康熙字典上每个字都有五行属性,可以在Internet上查到。

附上代码:

文件BaziEval.cpp

//BaziEval.cpp:Definestheentrypointfortheconsoleapplication.

//

#include

#include

usingnamespacestd;

voidUsage()

{

return;

}

boolCheckBazi(_TCHAR*bazi);

_TCHAR*ComputeTimeGan(_TCHAR*bazi,inthour);

_TCHAR*EvalBazi(_TCHAR*bazi);

int_tmain(intargc,_TCHAR*argv[])

_TCHAR*subCmd,*paraStr;

if(argc!=5&&argc!=3){

Usage();

return0;

subCmd=argv[1];

paraStr=argv[2];

if(argc==5){

if(wcslen(paraStr)!=6||!CheckBazi(paraStr)){

subCmd=argv[3];

paraStr=argv[4];

inthour=-1;

if(hour<0||hour>23){

_TCHAR*result=ComputeTimeGan(argv[2],hour);

if(result==0){

}else{

chartmpBuf[128];

WideCharToMultiByte(CP_ACP,0,result,-1,tmpBuf,127,NULL,NULL);

if(argc==3){

if(wcslen(paraStr)!=8||!CheckBazi(paraStr)){

_TCHAR*result=EvalBazi(paraStr);

chartmpBuf[1024];

WideCharToMultiByte(CP_ACP,0,result,-1,tmpBuf,1024,NULL,NULL);

文件BaziAlgorithm.cpp

boolCheckBazi(_TCHAR*bazi)

intbaziLen;

inti,j;

baziLen=wcslen(bazi);

if(baziLen!=6&&baziLen!=8)returnfalse;

for(i=0;i

_TCHARch=bazi[i];

for(j=0;j<10;j++)

if(ch==TianGan[j])break;

if(j>=10)returnfalse;

i++;

ch=bazi[i];

for(j=0;j<12;j++)

if(ch==DiZhi[j])break;

if(j>=12)returnfalse;

returntrue;

/*

根据出生日子的天干,通过下表来查算时辰干支:

时辰干支查算表

甲己乙庚丙辛丁壬戊癸

23-01子/水甲子丙子戊子庚子壬子

01-03丑/土乙丑丁丑己丑辛丑癸丑

03-05寅/木丙寅戊寅庚寅壬寅甲寅

05-07卯/木丁卯己卯辛卯癸卯乙卯

07-09辰/土戊辰庚辰壬辰甲辰丙辰

09-11巳/火己巳辛巳癸巳己巳丁巳

11-13午/火庚午壬午甲午丙午戊午

13-15未/土辛未癸未乙未丁未己未

15-17申/金壬申甲申丙申戊申庚申

17-19酉/金癸酉乙酉丁酉己酉辛酉

19-21戊/土甲戌丙戌戊戌庚戌壬戌

21-23亥/水乙亥丁亥己亥辛亥癸亥

*/

const_TCHAR*cTimeGanZhi_Table[12][5]=

};

static_TCHARsBuf[128];//用作八字结果缓冲区

//根据出生年月日的干支计算时辰干支

//输入参数:bazi,年月日的干支,即八字中的前六个字

//输出结果:八字字符串,Unicode编码

_TCHAR*ComputeTimeGan(_TCHAR*bazi,inthour)

_TCHARdayGan=bazi[4];

intindexX,indexY;

inti;

for(i=0;i<10;i++)

if(dayGan==TianGan[i])break;

if(i>=10)return0;

indexX=i;

if(indexX>=5)indexX-=5;

indexY=(hour+1)/2;

wcscpy(sBuf,bazi);

wcscat(sBuf,cTimeGanZhi_Table[indexY][indexX]);

returnsBuf;

十二月份天干强度表

生月\四柱天干甲乙丙丁戊己庚辛壬癸

子月1.21.21.01.01.01.01.01.01.21.2

丑月1.061.061.01.01.11.11.141.141.11.1

寅月1.141.141.21.21.061.061.01.01.01.0

卯月1.21.21.21.21.01.01.01.01.01.0

辰月1.11.11.061.061.11.11.11.11.041.04

巳月1.01.01.141.141.141.141.061.061.061.06

午月1.01.01.21.21.21.21.01.01.01.0

未月1.041.041.11.11.161.161.11.11.01.0

申月1.061.061.01.01.01.01.141.141.21.2

酉月1.01.01.01.01.01.01.21.21.21.2

戌月1.01.01.041.041.141.141.161.161.061.06

亥月1.21.21.01.01.01.01.01.01.141.14

doubleTianGan_Strength[12][10]=

{1.2,1.2,1.0,1.0,1.0,1.0,1.0,1.0,1.2,1.2},

{1.06,1.06,1.0,1.0,1.1,1.1,1.14,1.14,1.1,1.1},

{1.14,1.14,1.2,1.2,1.06,1.06,1.0,1.0,1.0,1.0},

{1.2,1.2,1.2,1.2,1.0,1.0,1.0,1.0,1.0,1.0},

{1.1,1.1,1.06,1.06,1.1,1.1,1.1,1.1,1.04,1.04},

{1.0,1.0,1.14,1.14,1.14,1.14,1.06,1.06,1.06,1.06},

{1.0,1.0,1.2,1.2,1.2,1.2,1.0,1.0,1.0,1.0},

{1.04,1.04,1.1,1.1,1.16,1.16,1.1,1.1,1.0,1.0},

{1.06,1.06,1.0,1.0,1.0,1.0,1.14,1.14,1.2,1.2},

{1.0,1.0,1.0,1.0,1.0,1.0,1.2,1.2,1.2,1.2},

{1.0,1.0,1.04,1.04,1.14,1.14,1.16,1.16,1.06,1.06},

{1.2,1.2,1.0,1.0,1.0,1.0,1.0,1.0,1.14,1.14}

十二月份地支强度表

生月子月丑月寅月卯月辰月巳月午月未月申月酉月戌月亥月

地支支藏

子癸1.21.11.01.01.041.061.01.01.21.21.061.14

丑癸0.360.330.30.30.3120.3180.30.30.360.360.3180.342

丑辛0.20.2280.20.20.230.2120.20.220.2280.2480.2320.2

丑己0.50.550.530.50.550.570.60.580.50.50.570.5

寅丙0.30.30.360.360.3180.3420.360.330.30.30.3420.318

寅甲0.840.7420.7980.840.770.70.70.7280.7420.70.70.84

卯乙1.21.061.141.21.11.01.01.041.061.01.01.2

辰乙0.360.3180.3420.360.330.30.30.3120.3180.30.30.36

辰癸0.240.220.20.20.2080.20.20.20.240.240.2120.228

辰戊0.50.550.530.50.550.60.60.580.50.50.570.5

巳庚0.30.3420.30.30.330.30.30.330.3420.360.3480.3

巳丙0.70.70.840.840.7420.840.840.7980.70.70.7280.742

午丁1.01.01.21.21.061.141.21.11.01.01.041.06

未丁0.30.30.360.360.3180.3420.360.330.30.30.3120.318

未乙0.240.2120.2280.240.220.20.20.2080.2120.20.20.24

未己0.50.550.530.50.550.570.60.580.50.50.570.5

申壬0.360.330.30.30.3120.3180.30.30.360.360.3180.342

申庚0.70.7980.70.70.770.7420.70.770.7980.840.8120.7

酉辛1.01.141.01.01.11.061.01.11.141.21.161.0

戌辛0.30.3420.30.30.330.3180.30.330.3420.360.3480.3

戌丁0.20.20.240.240.2120.2280.240.220.20.20.2080.212

戌戊0.50.550.530.50.550.570.60.580.50.50.570.5

亥甲0.360.3180.3420.360.330.30.30.3120.3180.30.30.36

亥壬0.840.770.70.70.7280.7420.70.70.840.840.7240.798

structZISTRENGTH{

_TCHARdiZhi;

_TCHARzhiCang;

doublestrength[12];

ZISTRENGTHDiZhi_Strength[]=

金---0

木---1

水---2

火---3

土---4

天干地支的五行属性表

天干:甲-木、乙-木、丙-火、丁-火、戊-土、己-土、庚-金、辛-金、壬-水、癸-水

地支:子-水、丑-土、寅-木、卯-木、辰-土、巳-火、午-火、未-土、申-金、酉-金、戌-土、亥-水

intTianGan_WuXingProp[10]={1,1,3,3,4,4,0,0,2,2};

intDiZhi_WuXingProp[12]={2,4,1,1,4,3,3,4,0,0,4,2};

intGenerationSourceTable[5]={4,2,0,1,3};

intComputeGanIndex(_TCHARgan)

if(TianGan[i]==gan)break;

if(i>=10)return-1;

returni;

intComputeZhiIndex(_TCHARzhi)

for(i=0;i<12;i++)

if(DiZhi[i]==zhi)break;

if(i>=12)return-1;

static_TCHARsResultBuf[1024];//用作八字测算结果返回的字符缓冲区

//根据八字计算五行平衡

//输入参数:bazi,年月日时的干支,即俗称的八字

//输出结果:分析结果字符串,Unicode编码

_TCHAR*EvalBazi(_TCHAR*bazi)

doublestrengthResult[5];

intmonthIndex=ComputeZhiIndex(bazi[3]);

if(monthIndex==-1)gotoERROR_CASE;

wcscpy(sResultBuf,bazi);

for(intwuXing=0;wuXing<5;wuXing++){

doublevalue1=0.0,value2=0.0;

//扫描4个天干

for(i=0;i<8;i+=2){

TCHARgan=bazi[i];

intindex=ComputeGanIndex(gan);

if(index==-1)gotoERROR_CASE;

if(TianGan_WuXingProp[index]==wuXing)

value1+=TianGan_Strength[monthIndex][index];

//扫描支藏

for(i=1;i<8;i+=2){

TCHARzhi=bazi[i];

for(intj=0;j

if(DiZhi_Strength[j].diZhi==zhi){

intzhiCangIndex=ComputeGanIndex(DiZhi_Strength[j].zhiCang);

if(zhiCangIndex==-1)gotoERROR_CASE;

if(TianGan_WuXingProp[zhiCangIndex]==wuXing){

value2+=DiZhi_Strength[j].strength[monthIndex];

break;

strengthResult[wuXing]=value1+value2;

//输出一行计算结果

_TCHARpreStr[128];

_TCHARtmpWBuf[256];

MultiByteToWideChar(CP_ACP,0,tmpBuf,strlen(tmpBuf)+1,

tmpWBuf,sizeof(tmpWBuf)/sizeof(_TCHAR));

preStr[0]=WuXingTable[wuXing];

wcscat(sResultBuf,preStr);

wcscat(sResultBuf,tmpWBuf);

//根据日干求命里属性

intfateProp,srcProp;

fateProp=TianGan_WuXingProp[ComputeGanIndex(bazi[4])];

if(fateProp==-1)gotoERROR_CASE;

tmpWBuf[3]=WuXingTable[fateProp];

//求同类和异类的强度值

srcProp=GenerationSourceTable[fateProp];

doubletongLei=strengthResult[fateProp]+strengthResult[srcProp];

THE END
1.生辰八字教程生辰八字教程 目录 天干地支 阴阳五行 十天干类象 十二地支类象 二十四节气 天干五合 天干四冲 地支六冲六合 地支六合 地支六冲 地支生旺库三合 地支三会 地支相刑 地支六害 十天干生旺死绝 十神 十神类象 地支藏干 藏干力量 天干地支 四柱当中每一柱都是由天干和地支组成,上面是天干,下面是地支https://blog.csdn.net/K_CRACKING/article/details/142793991
2.八字分析:中国传统算命方法之一,涉及出生年月日时的分析。生克辛八字分析是一种传统的命理学方法,它存在一定的局限性。首先,它缺乏科学依据来证明出生时间与人生运势之间的必然联系。其理论基础主要是古代哲学和经验总结,无法用现代科学的实验方法进行验证。其次,八字分析的解读具有很强的主观性。不同的命理师可能对同一八字有不同的解读,因为在判断五行强弱、十神作用等方面没有绝对https://www.163.com/dy/article/JIL0VRON0556ARJL.html
3.hmz6.com/news/20240812在命理学中,五行算法是一种较为常见的算法之一,其根据五行相生相克的理论来解释一个人的八字五行特征。关于生辰八字的五行算法,目前有多种不同的计算方法,每种方法都有其独特之处,可以带来不同的解读和预测结果。通过本文的讨论,我们将探讨生辰八字五行算法的多样性及其应用,帮助读者更好地了解这一命理学的分支领域http://hmz6.com/news/2024-08-12-020844169
4.八字五行喜用神怎么算,喜用神最正确的算法八字五行喜用神怎么算,喜用神最正确的算法 八字五行喜用神怎么算:根据出生时间综合推算。 八字五行是指根据出生年、月、日、时四个要素所组成的八个数字对应的五行属性,用来推算个人的基本情况。而喜用神则是指在八字五行中,与大运、流年五行相生相助的神。http://www.8882088.com/html/1064.htm
5.天干地支五行对照表地支的算法:用年代数除以12,后面的余数就代表某个地支, 余数分别为:4、5、6、7、8、9、10、11、0(能整除)、1、2、3, 代表地支为:子、丑、寅、卯、辰、巳、午、 未、 申、 酉、戌、亥, 比如2005年为例:年代末尾数为5,对应的天干为乙,2005除以12,余数为1,对应的地支为酉,所以2005年为乙酉年。 https://m.wang1314.com/doc/webapp/topic/20937787.html
6.五行缺什么怎么算?五行缺什么的算法是非常复杂的,这涉及到中国的占卜和命相学,想要知道五行缺什么首先要知道生辰八字,再由生辰八字去推导。 阴阳和五行学说相结合,成为古人解释各种自然和人生现象的一种理论。占卜和命相学是预测未来的一种活动。古代生产力低下,对个人命运就更难把握,也就更想知道。命相学就利用了阴阳五行学说来说明https://www.coozhi.com/shenghuojiaju/shenghuochangshi/135922.html
7.十款免费的生辰八字起名软件哪些更好用下面给大家推荐几款好用的免费的生辰八字起名软件,有需要的小伙伴们来了解一下。 1.名贯四海起名测名软件 5.60 该款软件是一款起名测名软件,主要功能包括个人起名、姓名吉凶分析、公司名吉凶分析和号码吉凶分析。它运用了我国古代周易金木水火土五行相生相克的原理,对姓名笔画进行五行数理分析,揭示其所蕴含的暗示信息https://app.zol.com.cn/jiqiao/154753.html
8.生辰八字缺什么怎么算缺失五行怎么补接亲网?生辰八字配合?:根据男女双方的生辰八字,选择适合双方的吉日,避开冲煞和犯太岁的时间。 ?季节和天气?:选择春、夏、秋、冬各季节的吉日,避免恶劣天气。 在这篇文章之中,小编为大家介绍了生辰八字的算法的信息,当然能够运用到生辰八字这样的私密信息的场合,还是有比较多的,最常见的场合还是与婚嫁相关的,如https://www.jieqinwang.com/baike/155255.html
9.生辰八字如何查询自己的生辰八字 方法一: 借助于各大算命网站,现在网络很发达,只要在算命网站输入自己出生的具体时间,就可以知道自己的生辰八字。 方法二: 生辰八字有固定的算法,这里先介绍简单的做法,最简单的办法就是查询万年历,不过万年历一般只提供年月日的天干地支。如2005年11月9日换成阴历为2005年十月初八,查询之后https://www.douban.com/group/topic/301166956/
10.算生辰八字app手机免费版算生辰八字的软件app有哪些生辰八字,简称八字,是指一个人出生时的干支历日期.这其实和我们现在说的生日是一个意思,只不过是将生日转化成天干地支纪时的方式.https://www.qqtn.com/qqkey/mfcsscbz/
11.算命免费生辰八字免费在线算命卜算子算命网是算命最准的免费网站,提供免费算命,生辰八字,八字算命,姓名测试,宝宝取名,星座运势,生肖运势,老黄历等免费在线算命内容!http://365zyg.com/
12.2024年结婚,在线生辰八字合婚能测算出最佳配对吗生辰八字合婚是一种传统命理学方法,通过双方生辰八字的五行生克关系来推断婚姻的吉凶。 在线生辰八字合婚可以提供一些初步的信息,但需要注意以下几点: 1. 准确性有限: 在线合婚工具通常使用算法和数据库,对八字进行分析和匹配。这些算法和数据库可能存在一定的误差,影响合婚结果的准确性。 2. 仅供参考: 生辰八字合婚的http://ceyouwang.com/433991.html
13.八字测算App排行榜应用宝八字测算app推荐八字排盘 【八字排盘】 专业八字排盘星座运势测算软件,为您提供全面运程预测! 以生辰八字五行为基础,融合周易、占卜、风水、算命推演出八字排盘、性格、事业、财富、感情、健康、流年分析和大运分析的专业算命软件。 八字排盘是一款以传播中华传统文化为宗旨,为用户提供切实生活指导与国学文化传承内容的“互联网+传统文化http://vip.diandian.com/phb/1706/7-1.html
14.姓名测试打分周易姓名打分姓名打分测试宝宝姓名打分成语取名女孩名字大全,有哪些? 3453 四书五经取名女孩名字,四书五经起名字女孩名字 4344 八字取名最新文章 属猪男孩八字缺水取什么名字,猪年男孩五行缺水怎么取名 5271 属猪男孩八字缺木取什么名字,猪年男孩五行缺木怎么取名 4027 属猪男孩八字缺金取什么名字,猪年男孩五行缺金怎么取名 3822 属猪女孩八字取名https://xingming.shen88.cn/
15.生辰八字五行宝宝起名软件V23.6算法分析Sendige成品:https://share.weiyun.com/89dd392ddbbb753f64c10dcb21a7e758 (密码:NYXK9I) 生辰八字五行宝宝起名软件 V23.6 算法分析 http://www.52pojie.cn/thread-574371-1-1.html (出处: 吾爱破https://www.cnblogs.com/Sendige/p/9604958.html
16.生辰免费八字测算网周易算命八字详批八字合婚称骨算命2024年最新算命算法,算命的免费网站,主要测算生辰八字算命,八字算命婚姻,免费姓名测试,宝宝起名打分,星座运势,周易算命,在线抽签等数十项免费在线精准算命_查运势网https://www.916m.com/
17.钧岳明名字打分钧岳明姓名免费测试生辰八字五格分析名字输入您测试的姓和名字,选择性别和出生时间,即可查看更为详细专业的生辰八字名字打分及详解。 姓名: 男女 出生时间: 立即八字测名打分 起名提示 五行起名是最常用的一种起名方法。其主要通过看一个人的出生时间,以日干支为用神,判断用神的五行属性和衰旺来决定起什么样的名字。 https://www.mzi8.com/ceshi/xm_%E9%92%A7%E5%B2%B3%E6%98%8E.html
18.生辰八字算命app有哪些可以利用生辰八字算命的软件合集黄历在中华的传统文化当中一直都是备受关注的,这也是为什么很多的人都比较注重出事的日期,甚至还有一些人会根据生辰八字来算命。在软件当中也有一些满足需求的。那么生辰八字算命app有哪些呢?今天小编就和大家详细介绍一下。不管是给自己算命还是给他人算命方式都特别的简单。 https://m.wandoujia.com/strategy/1055301094090732457.html