ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-03-28 15:03:28  阅读:216  来源: 互联网

标签:lottery 示例 python money list number dic 中奖 print


咱自己写个彩票程序,成功亏掉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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有