質問の誕生数の偏りをPythonで調べてみた。

 質問の誕生数の偏りを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