宝くじ当たらないかなぁと日々考えています。
そう簡単には当たらないってわかっています。
でも、どのくらい当たらないのか自分で確かめないと気が済まない。
ということでpythonでロト6がどのくらいの確率で当たるのかをプログラミングしてみました。
実装
ロト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を買います。
最後にどのくらい当選したかをまとめて表示します。
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回
ほんとにに当たらないんですね。。。
結論
自分でプログラム組んで試した結果、ほんとに当たらないものだと確信しました。
宝くじに頼らずに、自分の力で稼いでいこうと思います!!!