【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百多万,是我模拟中最差的一次。
标签:lottery,示例,python,money,list,number,dic,中奖,print 来源: https://www.cnblogs.com/zhangchengchao123/p/14588686.html