【python小示例】簡易彩票中獎模擬


咱自己寫個彩票程序,成功虧掉3個億

今天突發奇想,自己設計一個小程序,模擬彩票中獎,看看如果自己有個彩票公司,能掙錢嗎?
代碼如下:

# -*- utf-8 -*-
"""
彩票模擬示例
"""

import random
import datetime

starttime = datetime.datetime.now() # 記錄開始時間

money = 2 # 一張彩票單價
money_list = [] # 彩票及獎金池
buy_list = [] # 購買的號碼
lottery_list = [] # 中獎號碼
time_1 = 1 # 模擬次數
lottery_dic = {
    "一等獎": 0,
    "二等獎": 0,
    "三等獎": 0,
    "四等獎": 0,
    "五等獎": 0,
} # 中獎統計

while time_1 < 50000000: # 購買的彩票池
    list_1 = random.sample(range(1,34),5) # 生成5個紅球
    list_1.sort()
    number_b = random.randint(1,16) # 生成1個藍球
    list_1.append(number_b)
    buy_list.append(list_1)
    time_1 += 1


# 模擬開獎
list_2 = random.sample(range(1,34),5)
list_2.sort()
number_bl = random.randint(1,16)
list_2.append(number_bl) # 生成中獎的號碼

# 判斷中了幾等獎
for i in buy_list:
    number_1 = 0
    for j in i[0:5]:
        if j in list_2[0:5]:
            number_1 += 1
    if i[-1] == list_2[-1]:
        number_1 +=1

    if number_1 == 6:
        lottery_dic["一等獎"] += 1
        # print(i)
    elif number_1 == 5:
        lottery_dic["二等獎"] += 1
        # print(i)
    elif number_1 == 4:
        lottery_dic["三等獎"] += 1
    elif number_1 == 3:
        lottery_dic["四等獎"] += 1
    elif number_1 == 2:
        lottery_dic["五等獎"] += 1

打印中獎情況
print(
    """
    一等獎:{}
    二等獎:{}
    三等獎:{}
    四等獎:{}
    五等獎:{}
    """.format(lottery_dic["一等獎"],lottery_dic["二等獎"],lottery_dic["三等獎"],lottery_dic["四等獎"],lottery_dic["五等獎"])
)

# 查看中獎號碼及是否有一等獎
if list_2 in buy_list:
    print(list_2)
else:
    print("沒有一等獎")
    print(list_2)

# 計算售賣金額、獎金、累計余額池並打印
money_sole = time_1 * 2
money_give = lottery_dic["一等獎"]*5000000 + lottery_dic["二等獎"]*80000 + lottery_dic["三等獎"]*1000\
    + lottery_dic["四等獎"]*100 + lottery_dic["五等獎"]*10
money_resi = money_sole - money_give

money_list.append(money_sole)
money_list.append(money_give)
money_list.append(money_resi)
print(money_list)

endtime = datetime.datetime.now() # 結束時間
print((endtime - starttime).seconds) # 打印所花時間
View Code

咱模擬的是某球的中獎情況,當然對中獎情況和號碼購買進行了簡化,沒有考慮多倍購買,中獎等級也簡單的根據中獎的號碼個數進行設計,運行結果如下:

這不運行不知道,一運行嚇一跳,直接給我來了13注一等獎,按照每注500萬,這一等獎就得發6500萬,再加上后面的獎,要發的獎金就有4.977億!那咱賣了多少錢呢?
咱們程序設置的是2塊錢一注,一共進行了5000萬次循環,也就是賣出了5000萬注彩票,一共收入1個億,好家伙,還不夠獎金發的。
最后算下來,咱們凈虧3.977億,真的是褲衩子都輸沒了,要是王多魚有我,還怕花不完10個億。

最后

這個程序僅是個小模擬,各位大佬不要當真,真正的彩票系統要復雜得多,是我這條酸菜猿弄不出來的哈哈哈哈

------------------------------------------------------------------------------------------
更新,以下是完整的演示代碼,包含了所有獎項:

# -*- utf-8 -*-
"""
彩票模擬示例
"""

import random
import datetime

starttime = datetime.datetime.now() # 記錄開始時間

money = 2 # 一張彩票單價
money_list = [] # 彩票及獎金池
buy_list = [] # 購買的號碼
lottery_list = [] # 中獎號碼
time_1 = 1 # 模擬次數
lottery_dic = {
    "一等獎": 0,
    "二等獎": 0,
    "三等獎": 0,
    "四等獎": 0,
    "五等獎": 0,
    "六等獎": 0,
} # 中獎統計

while time_1 < 100000: # 購買的彩票池
    list_1 = random.sample(range(1, 34), 6) # 生成6個紅球
    list_1.sort()
    number_b = random.randint(1,16) # 生成1個藍球
    list_1.append(number_b)
    buy_list.append(list_1)
    time_1 += 1
# with open("彩票購買號碼.txt","wt") as f:
#     for i in buy_list:
#         f.write(str(i)+"\n")


# 模擬開獎
list_2 = random.sample(range(1,34),6)
list_2.sort()
number_bl = random.randint(1,16)
list_2.append(number_bl) # 生成中獎的號碼

# 判斷中了幾等獎
for i in buy_list:
    number_1 = 0
    for j in i[0:6]:
        if j in list_2[0:6]:
            number_1 += 1
    if i[-1] == list_2[-1]:
        number_1 +=1

    if number_1 == 7:
        lottery_dic["一等獎"] += 1
        # print(i)
    elif number_1 == 6 and i[-1] != list_2[-1]:
        lottery_dic["二等獎"] += 1
        # print(i)
    elif number_1 == 6 and i[-1] == list_2[-1]:
        lottery_dic["三等獎"] += 1
    elif number_1 == 5:
        lottery_dic["四等獎"] += 1
    elif number_1 == 4:
        lottery_dic["五等獎"] += 1
    elif i[-1] == list_2[-1]:
        lottery_dic["六等獎"] += 1

# 打印中獎情況
print(
    """
    一等獎:{}
    二等獎:{}
    三等獎:{}
    四等獎:{}
    五等獎:{}
    六等獎:{}
    """.format(lottery_dic["一等獎"],lottery_dic["二等獎"],lottery_dic["三等獎"],\
               lottery_dic["四等獎"],lottery_dic["五等獎"],lottery_dic["六等獎"])
)

# 查看中獎號碼及是否有一等獎
if list_2 in buy_list:
    print(list_2)
else:
    print("沒有一等獎")
    print(list_2)

# 計算售賣金額、獎金、累計余額池並打印
money_sole = time_1 * 2
money_give = lottery_dic["一等獎"]*5000000 + lottery_dic["二等獎"]*150000 + lottery_dic["三等獎"]*3000\
    + lottery_dic["四等獎"]*200 + lottery_dic["五等獎"]*10 + lottery_dic["六等獎"]*5
money_resi = money_sole - money_give

money_list.append(money_sole)
money_list.append(money_give)
money_list.append(money_resi)
print(money_list)

endtime = datetime.datetime.now() # 結束時間
print((endtime - starttime).seconds) # 打印所花時間
View Code

咱們設置賣了1千萬張,看看運行結果:

可以看到,經過重新設置后,中獎率明顯下降,但是依然開出了2注一等獎,直接1千萬發出去了,但我還是賺了3百多萬,是我模擬中最差的一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM