使用Python计算玩彩票赢钱概率

作者:淡淡博客 时间:2023-03-31 08:31:25 

工具:Jupyter notebook + Anaconda

游戏规则: * 一种玩法是买尾号。2元一个数字,中奖是20元。每个数字出现的概率相等。

目前想到两种买法:

  1. 随机购买,人是感性动物,很容易受周围环境干扰。完全随机购买在生活中是不存在的。

  2. 分析数字在前面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

使用Python计算玩彩票赢钱概率

可以看出输:赢:平=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

使用Python计算玩彩票赢钱概率

可以看出按照概率购买之后比值为:

输:赢:平=3733:3761:2506

相对之前完全随机购买

输:赢:平=6037:1886:2077

赢得几率提升了不少,甚至赢>输,说的我都想翘课买彩票了。

好了回到正题。珍爱生命,远离 * 毒。

来源:https://blog.i-ll.cc/archives/408

标签:概率,python
0
投稿

猜你喜欢

  • 利用python的socket发送http(s)请求方法示例

    2022-06-06 08:33:39
  • Django项目中表的查询的操作

    2023-04-23 10:22:23
  • Django+Celery实现动态配置定时任务的方法示例

    2021-06-11 13:56:19
  • Numpy 数组操作之元素添加、删除和修改的实现

    2023-06-23 22:09:03
  • python爬虫框架scrapy下载中间件的编写方法

    2021-10-16 13:37:19
  • python区块链实现简版网络

    2023-02-17 01:06:59
  • 如何设置mysql允许外部连接访问

    2024-01-15 05:22:14
  • 解决mysql 1040错误Too many connections的方法

    2024-01-24 06:56:58
  • 解决安装pycharm后不能执行python脚本的问题

    2023-07-25 06:51:04
  • 解决Tensorflow安装成功,但在导入时报错的问题

    2022-03-05 18:39:27
  • go语言分布式id生成器及分布式锁介绍

    2024-01-30 21:20:43
  • FrontPage2002简明教程七:HTML在FrontPage中的应用

    2008-09-17 11:33:00
  • Python实现抓取城市的PM2.5浓度和排名

    2023-07-01 11:13:33
  • CSS实现完美垂直居中

    2007-09-22 09:29:00
  • JavaScript静态的动态

    2024-05-02 16:10:42
  • Python的Bottle框架中实现最基本的get和post的方法的教程

    2022-07-13 13:37:24
  • 解决mysql登录错误:'Access denied for user 'root'@'localhost'

    2024-01-22 16:41:20
  • python的变量与赋值详细分析

    2022-06-14 23:09:44
  • 标签明晰、有效

    2010-01-18 12:22:00
  • 使用IP地址来统计在线人数方法

    2007-08-13 12:51:00
  • asp之家 网络编程 m.aspxhome.com