[討論] 斗數統計程式

作者: Cigol (失去左手的荊無命)   2016-04-30 17:19:46
從以前開始接觸紫微斗數,就一直有些疑惑:
命盤到底有多少個?
每個格局出現的機率如何?
哪些時辰能排出某個命盤?
本人用 python 3 寫了些程式試圖回答這些問題
程式包括兩部分:ziweichart, ziweistat
ziweichart 主要功能在於建立命盤資料庫
ziweistat 對資料庫內容進行統計
程式碼在此:
https://dl.dropboxusercontent.com/u/1009478/ziweichart.html
https://dl.dropboxusercontent.com/u/1009478/ziweistat.html
ziweichart 的程式功能簡述如下:
setchart( ):
輸入干支月日時(農曆)就可以排出命盤,
目前的設計是只排出十四主星、六吉六煞、祿存天馬
有需要排其他星曜的可以自己修改程式
chart_data( ):
輸入起迄年的干支,可以排出這段時間內所有的命盤
這邊要注意理論與實際月曆的不同
理論上從甲子年1月1日子時到癸亥年12月30日亥時有 259200 個時辰
但實際月曆上的一甲子(譬如 1924-1983 或1984-2044),
因為有閏月、小月的關係,
出現的命盤數會大於 259200
如果你想要得到實際月曆年某個區間的命盤
可以在 chart_data( ) 裡輸入閏月、小月的資料做調整。
chart_set( ):
刪除重複的命盤,
統計每種命盤出現幾次
並且幫每種命盤進行編號
在不考慮閏月小月,
且只排十四主星、六吉六煞、祿存天馬的情況下
一甲子內只有 34560 種命盤
每種命盤最多出現 12 次,最少出現 3 次,平均次數為 7.5
===========================
ziweistat 讀取命盤資料庫,進行統計,功能簡述如下:
birthdays( ):
輸入命盤的編號,可以顯示有哪些時辰會排出這種命盤
舉例來說,能排出跟甲子年1月1日子時相同命盤有六個:
甲子、甲辰、甲申年1月1日子時, 1月20日子時
frq():
輸入星曜或宮名,統計此星曜或宮在每個支宮出現的次數
譬如一甲子內,紫微出現在各支宮的百分比如下:
子: 4.67
丑: 8.00
寅:10.00
卯:10.00
辰:11.33
巳:10.00
午:10.67
未: 8.67
申: 7.33
酉: 6.67
戌: 6.00
亥: 6.67
form():
輸入格局條件,找出符合此格局的命盤出現次數,
並找出哪些時辰能排出此命盤
舉例來說,
若條件為:未宮坐命, 命無主星, 對宮有天同巨門
則一甲子內有 240 個符合條件的命盤,
有 2304 的時辰會出現此盤,比例為 0.89%
若條件為:未宮坐命, 命無主星, 對宮有天同巨門, 三方四正無煞星
則一甲子內只剩 34 個符合條件的命盤,
只有 321 的時辰會出現此盤,比例為 0.12%
==============
上述所有程式碼與範例都已公開
本人不是專業的程式設計師
也許程式寫的不是很漂亮,但希望拋磚引玉
有興趣的板友歡迎自由取用
作者: aki0530 (子晨)   2016-04-30 21:49:00
作者: zephyrmartin (趙雲)   2016-05-01 02:50:00
酷喔 同是工程師推一個!!

Links booklink

Contact Us: admin [ a t ] ucptt.com