【python小示例】简易彩票中奖模拟

【python小示例】简易彩票中奖模拟,第1张

概述咱自己写个彩票程序,成功亏掉3个亿今天突发奇想,自己设计一个小程序,模拟彩票中奖,看看如果自己有个彩票公司,能挣钱吗?代码如下:#-*-utf-8-*-"""彩票模拟示例"""importrandomimportdatetimestarttime=datetime.datetime.now()#记录开始时间money=2#一张彩 咱自己写个彩票程序,成功亏掉3个亿

今天突发奇想,自己设计一个小程序,模拟彩票中奖,看看如果自己有个彩票公司,能挣钱吗?
代码如下:

# -*- utf-8 -*-"""彩票模拟示例"""import randomimport datetimestarttime = 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 * 2money_give = lottery_dic["一等奖"]*5000000 + lottery_dic["二等奖"]*80000 + lottery_dic["三等奖"]*1000\    + lottery_dic["四等奖"]*100 + lottery_dic["五等奖"]*10money_resi = money_sole - money_givemoney_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 randomimport datetimestarttime = 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 * 2money_give = lottery_dic["一等奖"]*5000000 + lottery_dic["二等奖"]*150000 + lottery_dic["三等奖"]*3000\    + lottery_dic["四等奖"]*200 + lottery_dic["五等奖"]*10 + lottery_dic["六等奖"]*5money_resi = money_sole - money_givemoney_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百多万,是我模拟中最差的一次。

总结

以上是内存溢出为你收集整理的【python小示例】简易彩票中奖模拟全部内容,希望文章能够帮你解决【python小示例】简易彩票中奖模拟所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1188237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存