Python

【Python】ロト6がどのくらいの確率で当たるのかをプログラムで確認してみる

宝くじ当たらないかなぁと日々考えています。

そう簡単には当たらないってわかっています。

でも、どのくらい当たらないのか自分で確かめないと気が済まない。

ということでpythonでロト6がどのくらいの確率で当たるのかをプログラミングしてみました。

Contents
  1. 実装
  2. 結論

実装

ロト6の当選番号をリストに追加します。
import random


def set_roto6():
    '''
    当選番号を設定
    '''
    list = set()
    while len(list) != 6:
        list.add(random.randint(1, 43))

    return list
ボーナス番号を設定します。
def set_bonus(list):
    '''
    ボーナス番号を設定
    '''
    bonus = random.randint(1, 43)
    while bonus in list:
        bonus = random.randint(1, 43)
    return bonus
自分の購入番号を設定します。
(固定で適当な数値を入れています。)
def set_my_roto6():
    '''
    購入番号を設定
    '''
    list = {10, 14, 27, 29, 32, 33}
    return list
当選番号、購入番号、ボーナス番号から当選しているかを判断して順位を取得します。
def judge_win(roto6_list, my_list, bonus):
    '''
    当選しているか判断して順位を返します。
    '''
    win_count = roto6_list & my_list
    is_bonus = bonus in roto6_list

    rank = 0

    if len(win_count) == 6:
        rank = 1
    elif len(win_count) == 5 and is_bonus:
        rank = 2
    elif len(win_count) == 5:
        rank = 3
    elif len(win_count) == 4:
        rank = 4
    elif len(win_count) == 3:
        rank = 5
    else:
        rank = 0

    return rank
結果を表示します。
def display_result(times_count, roto6_list, my_list, rank, bonus_no):
    '''
    結果を表示します。
    '''
    str1 = '{}回'.format(times_count)
    win_list = sorted(list(roto6_list))
    str2 = '当選番号:{},{},{},{},{},{},[{}] '.format(
        win_list[0], win_list, win_list, win_list, win_list, win_list[5], bonus_no
    )
    select_list = sorted(list(my_list))
    str3 = '選択番号:{},{},{},{},{},{} '.format(
        select_list[0], select_list, select_list, select_list, select_list, select_list[5]
    )

    str4 = ''
    if rank != 0:
        str4 = 'おめでとうございます {}当です!!'.format(rank)
    else:
        str4 = '残念でした'

    print(str1 + str2 + str3 + str4)
メイン処理です。
最後にどのくらい当選したかをまとめて表示します。
100000回ロト6を買います。
# 選択番号設定
my_list = set_my_roto6()

# 判定
results = [0 for _ in range(6)]
for times_count in range(1, 100000):
    roto6_list = set_roto6()
    bonus_no = set_bonus(roto6_list)
    rank = judge_win(roto6_list, my_list, bonus_no)
    results[rank] += 1
    display_result(times_count, roto6_list, my_list, rank, bonus_no)

print('結果')
print('1当:{}回'.format(results))
print('2当:{}回'.format(results))
print('3当:{}回'.format(results))
print('4当:{}回'.format(results))
print('5当:{}回'.format(results[5]))
print('はずれ:{}回'.format(results[0]))
結果は・・・
99997回当選番号:2,13,16,19,28,29,[20] 選択番号:10,14,27,29,32,33 残念でした
99998回当選番号:6,8,21,32,37,41,[9] 選択番号:10,14,27,29,32,33 残念でした
99999回当選番号:5,6,17,18,33,34,[15] 選択番号:10,14,27,29,32,33 残念でした
結果
1当:0回
2当:0回
3当:4回
4当:163回
5当:2558回
はずれ:97274回

ほんとにに当たらないんですね。。。

結論

自分でプログラム組んで試した結果、ほんとに当たらないものだと確信しました。

宝くじに頼らずに、自分の力で稼いでいこうと思います!!!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA