这是农历历法的正常现象。每一个朔望月的周期是29.5302天(不是整数),又要保证每个月的农历朔月都发生在农历初一。所以在农历月份初一的0:00整,月龄(经过朔月的天数)必然是0.00到-1.00之间。当此刻月龄比较大(接近0),这个月是小月的概率比较大(为了保证下个月的朔月落在初一),如果月龄比较小(接近-1)则反之。
大小月的出现,是朔望月变化周期的必然结果。腊月是小月,也是因此使然。当然,实际情况复杂得多,最显著的因素是月球轨道的偏心率(公转速度不同),黄白交角的存在(黄道上投影运动速度不一)。现代天文学对于月球运动,考虑了几百个因素,这就不是我普通爱好者可以一一诠释的了。
总之,正常,我也能推算若干年的农历。不过很麻烦,误差也不小,还是交给紫金山天文台吧~