質問の誕生数の偏りをPythonで調べてみました。(^_^;
1950年から2050年までの1月1日から12月31までについて調べて平均をとってみると、同じぐらいになりました。(^_^;
また、2000年から2050年もやってみましたが、ちょっと変わりますが、似たようなものです。(^_^;
ちなみに、プログラムをコンソールで実行して、よく眺めてみると、周期的な右斜め下(\)の平行線が見えます。(^_^;
西暦0年(実際はないみたいですけどあると仮定)、この年は、誕生数に年の影響がなくなります。このとき、たとえば、1月1日を考えると、1+1=2
西暦1年、1月1日は年の1を足して3になります。同様に、他の日も一斉に1つ増えるので、その合計も同様にずれます。
ちなみに、もとの誕生数が9のとき9+1=10→1+0=1と0じゃなくて1に戻って循環します。
よって、西暦0年の誕生数の合計をそれぞれ、1(a),2(b),3(c),4(d),5(e),6(f),7(g),8(h),9(i)とすると、次のように9年ごとに循環するはずです。実際はうるう年などの影響で違うと思いますが。(^_^;
誕生数 1 2 3 4 5 6 7 8 9 西暦0年 a b c d e f g h i 西暦1年 i a b c d e f g h 西暦2年 h i a b c d e f g 西暦3年 g h i a b c d e f 西暦4年 f g h i a b c d e 西暦5年 e f g h i a b c d 西暦6年 d e f g h i a b c 西暦7年 c d e f g h i a b 西暦8年 b c d e f g h i a 西暦9年 a b c d e f g h i ・・・
最近の9の倍数でうるう年じゃないのは次の通りです。
2007 : 39 41 42 41 42 40 41 39 40
∴(a,b,c,d,e,f,g,h,i)=(39, 41,42, 41, 42, 40, 41, 39, 40)
● BirthNumber.py
# coding: UTF-8 # BirthNumber.py import datetime import calendar def getBirthNum(sBirthDay): s = sBirthDay.replace('-','') while True: n = len(s) iSum = 0 for i in range(n): iSum+=int(s[i]) s = str(iSum) if len(s)==1: break return iSum def main(): print("B.N. : 1 2 3 4 5 6 7 8 9") print("-----+---------------------------") total = [0]*10 sy, ey = 1950,2050 for y in range(sy, ey+1): subTotal = [0]*10 newYear = datetime.datetime(y,1,1) for d in range(365+(1 if calendar.isleap(y) else 0)): s = (newYear+datetime.timedelta(days=d)).strftime("%Y-%m-%d") subTotal[getBirthNum(s)]+=1 t = "%d :"%y for i in range(1,10): t+=" %d"%subTotal[i] total[i]+=subTotal[i] print(t) print("-----+---------------------------") t = u"平均 :" for i in range(1,10): t+=" %.1f"%(1.0*total[i]/(ey-sy+1)) print(t) if __name__ == '__main__': main()
●実行結果
B.N. : 1 2 3 4 5 6 7 8 9 -----+--------------------------- 1950 : 41 42 40 41 39 40 39 41 42 1951 : 42 41 42 40 41 39 40 39 41 1952 : 41 42 42 42 40 41 39 40 39 1953 : 39 41 42 41 42 40 41 39 40 1954 : 40 39 41 42 41 42 40 41 39 1955 : 39 40 39 41 42 41 42 40 41 1956 : 41 39 40 39 41 42 42 42 40 1957 : 40 41 39 40 39 41 42 41 42 1958 : 42 40 41 39 40 39 41 42 41 1959 : 41 42 40 41 39 40 39 41 42 1960 : 42 42 42 40 41 39 40 39 41 1961 : 41 42 41 42 40 41 39 40 39 1962 : 39 41 42 41 42 40 41 39 40 1963 : 40 39 41 42 41 42 40 41 39 1964 : 39 40 39 41 42 42 42 40 41 1965 : 41 39 40 39 41 42 41 42 40 1966 : 40 41 39 40 39 41 42 41 42 1967 : 42 40 41 39 40 39 41 42 41 1968 : 42 42 40 41 39 40 39 41 42 1969 : 42 41 42 40 41 39 40 39 41 1970 : 41 42 41 42 40 41 39 40 39 1971 : 39 41 42 41 42 40 41 39 40 1972 : 40 39 41 42 42 42 40 41 39 1973 : 39 40 39 41 42 41 42 40 41 1974 : 41 39 40 39 41 42 41 42 40 1975 : 40 41 39 40 39 41 42 41 42 1976 : 42 40 41 39 40 39 41 42 42 1977 : 41 42 40 41 39 40 39 41 42 1978 : 42 41 42 40 41 39 40 39 41 1979 : 41 42 41 42 40 41 39 40 39 1980 : 39 41 42 42 42 40 41 39 40 1981 : 40 39 41 42 41 42 40 41 39 1982 : 39 40 39 41 42 41 42 40 41 1983 : 41 39 40 39 41 42 41 42 40 1984 : 40 41 39 40 39 41 42 42 42 1985 : 42 40 41 39 40 39 41 42 41 1986 : 41 42 40 41 39 40 39 41 42 1987 : 42 41 42 40 41 39 40 39 41 1988 : 41 42 42 42 40 41 39 40 39 1989 : 39 41 42 41 42 40 41 39 40 1990 : 40 39 41 42 41 42 40 41 39 1991 : 39 40 39 41 42 41 42 40 41 1992 : 41 39 40 39 41 42 42 42 40 1993 : 40 41 39 40 39 41 42 41 42 1994 : 42 40 41 39 40 39 41 42 41 1995 : 41 42 40 41 39 40 39 41 42 1996 : 42 42 42 40 41 39 40 39 41 1997 : 41 42 41 42 40 41 39 40 39 1998 : 39 41 42 41 42 40 41 39 40 1999 : 40 39 41 42 41 42 40 41 39 2000 : 39 40 39 41 42 42 42 40 41 2001 : 41 39 40 39 41 42 41 42 40 2002 : 40 41 39 40 39 41 42 41 42 2003 : 42 40 41 39 40 39 41 42 41 2004 : 42 42 40 41 39 40 39 41 42 2005 : 42 41 42 40 41 39 40 39 41 2006 : 41 42 41 42 40 41 39 40 39 2007 : 39 41 42 41 42 40 41 39 40 2008 : 40 39 41 42 42 42 40 41 39 2009 : 39 40 39 41 42 41 42 40 41 2010 : 41 39 40 39 41 42 41 42 40 2011 : 40 41 39 40 39 41 42 41 42 2012 : 42 40 41 39 40 39 41 42 42 2013 : 41 42 40 41 39 40 39 41 42 2014 : 42 41 42 40 41 39 40 39 41 2015 : 41 42 41 42 40 41 39 40 39 2016 : 39 41 42 42 42 40 41 39 40 2017 : 40 39 41 42 41 42 40 41 39 2018 : 39 40 39 41 42 41 42 40 41 2019 : 41 39 40 39 41 42 41 42 40 2020 : 40 41 39 40 39 41 42 42 42 2021 : 42 40 41 39 40 39 41 42 41 2022 : 41 42 40 41 39 40 39 41 42 2023 : 42 41 42 40 41 39 40 39 41 2024 : 41 42 42 42 40 41 39 40 39 2025 : 39 41 42 41 42 40 41 39 40 2026 : 40 39 41 42 41 42 40 41 39 2027 : 39 40 39 41 42 41 42 40 41 2028 : 41 39 40 39 41 42 42 42 40 2029 : 40 41 39 40 39 41 42 41 42 2030 : 42 40 41 39 40 39 41 42 41 2031 : 41 42 40 41 39 40 39 41 42 2032 : 42 42 42 40 41 39 40 39 41 2033 : 41 42 41 42 40 41 39 40 39 2034 : 39 41 42 41 42 40 41 39 40 2035 : 40 39 41 42 41 42 40 41 39 2036 : 39 40 39 41 42 42 42 40 41 2037 : 41 39 40 39 41 42 41 42 40 2038 : 40 41 39 40 39 41 42 41 42 2039 : 42 40 41 39 40 39 41 42 41 2040 : 42 42 40 41 39 40 39 41 42 2041 : 42 41 42 40 41 39 40 39 41 2042 : 41 42 41 42 40 41 39 40 39 2043 : 39 41 42 41 42 40 41 39 40 2044 : 40 39 41 42 42 42 40 41 39 2045 : 39 40 39 41 42 41 42 40 41 2046 : 41 39 40 39 41 42 41 42 40 2047 : 40 41 39 40 39 41 42 41 42 2048 : 42 40 41 39 40 39 41 42 42 2049 : 41 42 40 41 39 40 39 41 42 2050 : 42 41 42 40 41 39 40 39 41 -----+--------------------------- 平均 : 40.6 40.6 40.6 40.6 40.6 40.6 40.6 40.6 40.6
※参考URL
http://www.python-izm.com/contents/basis/date.shtml
http://docs.python.jp/2.4/lib/module-calendar.html