誕生日占いを確率論で見てみよう【誕生数】

Python
スポンサーリンク

はじめに

誕生日占いではある一定の式により導き出された値を用いてその人の性格などを占います。その中で、各誕生数の出現頻度が気になったため調べてみました。

誕生日占いとは何か

そもそも誕生日占いとはどのようなものかわからない方もいると思いますので簡単に説明します。

誕生日占いは「カバラ数秘術」から派生した占いです。天から授かった誕生日をある一定の方式で計算して誕生数を導き出し、その人の性格や使命を占おうというものです。

誕生数には1~9と11、22、33という数が採用されます。算出は非常に簡単で誕生年月日の数値をすべてばらして、上記の数値となるまで足すだけです。11、22、33は高次元の誕生数で珍しいとされています。以下に算出例を挙げます。

例1)2011年8月10日の場合
 2 + 0 + 1 + 1 + 8 + 1 + 0 = 13
 1 + 3 = 4 (これが誕生数)

例2)1996年1月7日
 1 + 9 + 9 + 6 + 1 + 7 = 33 (これが誕生数)

調べるきっかけ

非常に簡単な計算で算出可能かつ少々トリッキーなことをする必要があり、プログラミングの題材としてちょうどよく占いプログラムを作成しました。そのプログラムのデバッグの際に、出現させることが難しい誕生数があり確率が気になり今回の調査に至りました。

コード作成

サクッと出現確立を見るためにpythonにて算出プログラムを作成しました。ただ結果が出ればよいということで、20分程度で作成したので非常に煩雑になっておりますがお許しください。

from datetime import date,timedelta

def main():
    """メイン関数"""
    count_date = date(1, 1, 1)
    counter = {
        1: 0, 2: 0, 3: 0, 4: 0, 5: 0,
        6: 0, 7: 0, 8: 0, 9: 0,
        11: 0, 22: 0, 33: 0
    }
    cont = 0

    while(True):
        year = count_date.year
        month = count_date.month
        day = count_date.day

        birthday_number = calc_birthday_number(
            number_division(year) +
            number_division(month) +
            number_division(day)
        )

        counter[birthday_number] += 1
        cont += 1

        if (year == 9999 and month == 12 and day == 31):
            break

        count_date += timedelta(days=1)

    print("num\tcnt\t%")
    for count in counter:
        print(str(count) + "\t" + str(counter[count]) + "\t" + str(round((counter[count]/cont) * 100, 2)))
    
def number_division(num):
    """数値分割
    Args:
        num (int): 数値
    Return:
        list: 分割後のリスト
    """
    return [int(x) for x in list(str(num))]

def calc_birthday_number(arr):
    """誕生数算出
    Args:
        arr (list): 数値リスト
    Returns:
        int: 誕生数
    """
    num = sum(arr)
    if ((1 <= num <= 9) or num in [11, 22, 33]):
        return num

    return calc_birthday_number(number_division(num))

if __name__ == "__main__":
    main()

算出結果

算出期間:西暦1年1月1日~西暦9999年12月31日

誕生数出現数(回)出現確立(%)
140578511.11
21152423.16
340578511.11
42555637.0
540578311.11
62483026.8
740578511.11
840578511.11
940578311.11
112905437.96
221502204.11
331574834.31

まとめ

算出の結果、巷では11、22、33が珍しいとされていましたが、実際には2が一番出現頻度が低く、続いて22、33が同率で出現度が低い結果となりました。

これに関しては、デバッグ時に2が果てしなく出現しなかったため体感とも一致しました。心の中でもやもやしていたものがすっきりした感じです。

もし、誕生日占いに興味を持たれましたら以前作成した占いプログラムがあるのでぜひ試してみてください。結果については「信じるか信じないかはあなた次第」です。

コメント

タイトルとURLをコピーしました