使用Python计算玩彩票赢钱概率
作者:淡淡博客 发布时间:2023-03-31 08:31:25
标签:概率,python
工具:Jupyter notebook + Anaconda
游戏规则: * 一种玩法是买尾号。2元一个数字,中奖是20元。每个数字出现的概率相等。
目前想到两种买法:
随机购买,人是感性动物,很容易受周围环境干扰。完全随机购买在生活中是不存在的。
分析数字在前面N期出现的概率,选择概率最小的n个数字购买。
导入包
import numpy as np
定义玩法一:完全随机购买
def play_lottery(my_money,play_num,money):
'''
随机选择数的中奖率
result:结果字典
num:用于统计每个数字出现次数
my_money:我的余额
play_num:投注期数
money:投注额
flag: 1代表赢钱 0则相反 2表示不输不赢
'''
flag = 1
temp = my_money
result = {'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5,
'6':6,
'7':7,
'8':8,
'9':9}
data = np.random.randint(0,10,(play_num,1))
num = np.zeros((10,1))
for i in data:
play = np.random.randint(0,10,(5,1))
if i in play:
temp = temp + money
else:
temp = temp - money
if result[str(i[0])] == i[0]:
num[i[0]] = num[i[0]] + 1
print('我的余额:',temp)
print('开奖结果统计:\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
if temp < my_money:
flag = 0
elif temp == my_money:
flag = 2
return flag
* 代码
i = 0
binary = np.zeros((3,1))
while i < 10000:
binary[play_lottery(1000,10,10)][0] += 1
i = i + 1
可以看出输:赢:平=6037:1886:2077
定义玩法二:按照概率购买
第一次购买,假设玩家已经获取到前面N期开奖号的中奖规律,不不不,应该是前面N期的各个数字出现的次数。
方法如下:
def play_lottery2(my_money,play_num,money):
'''
随机选择数的中奖率
result:结果字典
num:用于统计每个数字出现次数
my_money:我的余额
play_num:投注期数
money:投注额
flag: 1代表赢钱 0则相反 2表示不输不赢
'''
flag = 1
temp = my_money
result = {'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5,
'6':6,
'7':7,
'8':8,
'9':9}
data = np.random.randint(0,10,(play_num,1))
num = np.zeros((10,1))
num_first = np.random.randint(0,10,(10,1))
is_one = 1
for i in data:
if is_one == 1:
play = np.argsort(num_first,axis=0).reshape(-1,1)[0:5]
is_one = 0
play = np.argsort(num,axis=0).reshape(-1,1)[0:5]
if i in play:
temp = temp + money
else:
temp = temp - money
if result[str(i[0])] == i[0]:
num[i[0]] = num[i[0]] + 1
print('我的余额:',temp)
print('开奖结果统计:\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
if temp < my_money:
flag = 0
elif temp == my_money:
flag = 2
return flag
* 代码
i = 0
binary = np.zeros((3,1))
while i < 10000:
binary[play_lottery2(1000,10,10)][0] += 1
i = i + 1
可以看出按照概率购买之后比值为:
输:赢:平=3733:3761:2506
相对之前完全随机购买
输:赢:平=6037:1886:2077
赢得几率提升了不少,甚至赢>输,说的我都想翘课买彩票了。
好了回到正题。珍爱生命,远离 * 毒。
来源:https://blog.i-ll.cc/archives/408


猜你喜欢
- Tuple 叫做 tuple,用小括号、或者无括号来表述,是一连串有顺序的数字。a_tuple = (12, 3, 5, 15 , 6)an
- python的pdb调试命令的命令整理及实例一、命令整理pdb调试命令完整命令简写命令描述argsa打印当前函数的参数breakb设置断点c
- 前言MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_que
- 阅读上一章:Chapter 14 图片替换Chapter 15 为<body>指定样式把内容与显示效果分开设定的好处之一就是灵活
- 本文实例讲述了Python实现在tkinter中使用matplotlib绘制图形的方法。分享给大家供大家参考,具体如下:一. 代码:# co
- PHP在运行时, 针对严重程度不同的错误,会给以不同的提示。 eg:在$a没声明时,直接相加,值为NULL,相加时当成0来算.但是,却提示N
- 写在前面:这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器。我
- 本文实例讲述了JS实现跟随鼠标闪烁转动色块的方法。分享给大家供大家参考。具体实现方法如下:<html><head>&
- 1 减少HTTP请求数量 (Minimize HTTP Requests) tag:content80%的用户响应时间被花费在前端
- 前言前两篇我们分别爬取了糗事百科和妹子图网站,学习了 Requests, Beautiful Soup 的基本使用。不过前两篇都是从静态 H
- MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先
- names=["zhao00","qian01","sun02","l
- IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Hugunin所发起,是一个开源的项目,基于微软
- mytop类似于linux top工具,可以实时监控mysql服务器的性能信息。 安装方法 1、安装依赖 # cpan # cpan >
- #coding=gbkfrom xml.dom import minidom,Nodeimport urllib2,re,osdef rea
- python中字典的key不能是可变类型。字典可存储任意类型对象,其中值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。语法格
- 近期,阿里云云安全中心基于全新的深度威胁检测功能,监测到云上部分用户的 SQL Server 数据库内部隐藏着一种新型的持久化后门程序。攻击
- 下载好所需程序1.Selenium简介Selenium是一个用于Web应用程序测试的工具,直接运行在浏览器中,就像真正的用户在操作一样。2.
- 用pycharm写Scrapy框架的时候发现无法引用items.py里的类且自己写的工具类也无法被应用难受了我快一天了,下面我捋一捋我的解决
- 幸运草又名四叶草,一般指四叶的苜蓿、或车轴草。在十万株苜蓿草中,你可能只会发现一株是四叶草,机会率大约是十万分之一。因此四叶草是国际公认的幸