咱自己寫個彩票程序,成功虧掉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) # 打印所花時間
咱模擬的是某球的中獎情況,當然對中獎情況和號碼購買進行了簡化,沒有考慮多倍購買,中獎等級也簡單的根據中獎的號碼個數進行設計,運行結果如下:

這不運行不知道,一運行嚇一跳,直接給我來了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) # 打印所花時間
咱們設置賣了1千萬張,看看運行結果:

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