咱自己写个彩票程序,成功亏掉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百多万,是我模拟中最差的一次。

【python小示例】简易彩票中奖模拟的更多相关文章

  1. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  2. 牛客小白月赛13 小A买彩票 (记忆化搜索)

    链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  3. 小A买彩票-(组合数)

    链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 题目描述 小A最近开始沉迷买彩票,并且希望能够通过买彩票发家致富.已知购买一张彩票需要3元,而彩票 ...

  4. EX14 彩票中奖 (lottery.pas/c/cpp)

    [题目描述]小明想试试运气去购买彩票,所以他开始研究彩票大乐透的玩法:超级大乐透是指由购买者从01—35共35个号码中选取5个号码为前区号码,并从01—12共12个号码中选取2个号码为后区号码组合为一 ...

  5. python 小题

    python 小题:给定一个字符串,找出不含有重复字符的最长子串的长度.示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc&quo ...

  6. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  7. Python小工具--删除svn文件

    有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...

  8. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  9. 【java】彩票中奖码生成器:java.util.Random里的方法public int nextInt(int bound)

    package 彩票中奖码生成器; import java.util.Random; public class TestRandom { public static void main(String[ ...

随机推荐

  1. CSS event pass through

    CSS event pass through CSS 黑科技 / CSS 技巧: css 禁用点击事件, 实现事件冒泡的效果 https://caniuse.com/?search=CSS point ...

  2. C# 6.0 Features , C# 7.0 Features

    1 1 1 C# 6.0 Features http://stackoverflow.com/documentation/c%23/24/c-sharp-6-0-features#t=20160828 ...

  3. css 命名冲突 & solution

    css 命名冲突 & solution 类似这样,为了解决模块间可能存在的 css 命名冲突问题,需要单独提供给模块开发者一套模块开发环境:同时,文档上要有如何使用的规范说明. CSS 建议: ...

  4. asm align 对齐数据

    最大成员dword data: dd 1 db 2 align 4 dw 3 000E0010 - 01 00 00 00 000E0014 - 02 00 00 00 000E0018 - 03 0 ...

  5. 【转】【机器人学:运动规划】OMPL开源运动规划库的安装和demo

    https://blog.csdn.net/gpeng832/article/details/73736225

  6. 内核栈与thread_info结构详解

    本文转载自内核栈与thread_info结构详解 什么是进程的内核栈? 在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进 ...

  7. 手把手教你Spring Boot整合Mybatis Plus 代码生成器

    一.在pom.xml中添加所需依赖 <!-- MyBatis-Plus代码生成器--> <dependency> <groupId>com.baomidou< ...

  8. KMP算法,你想知道的都在这里!

    简洁 我相信很多人都听说过KMP算法(PS:在上数据结构的时候,这个算法自始至终都没想明白) 大家也知道KMP算法是用来寻找目标子串的算法,但是都没有真正搞懂KMP.之前,我也是如此,我疑惑的有: N ...

  9. DQL:data query language用来查询数据库表中的数据

    对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 如果没有查询条件,则每次查询所有的行.实际应用中,一般要指定查询的条件.对记录进行过滤. 查询 ...

  10. Centos7.7下安装Python3.7 并兼容python2.7

    前言 1.首先来看一下系统版本 [root@python3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1810 (Core) 2.更新一 ...