放大招啦,用Python来预测双色球

一、需求简介

之前偶然见到一位网友提出了关于双色球数据的分析需求,感觉颇有趣味,便着手操作了一番。如下为某双色球发布站的页面,可以看到每期会产生红/蓝两种颜色的数字,其中红球为 33 选 6,蓝球为 16 选 1,一共是从 49 个球中选 7 个。假如想对某一色号球下注,比如红1 球,要先分析一下该球以往的产出情况。
在这里插入图片描述
可以从以下 3 个方面来分析,以史明鉴,看看最新一期是否值得选取该球:

1、遗漏情况

统计遗漏 n 期后命中的次数,如上图:遗漏 1 期后中的次数有 2 次,遗漏 2 期后中的次数有 1 次,遗漏 5 期后中的次数有 2 次,遗漏 7 期后中的次数有 1 次。
在这里插入图片描述

2、连续重号情况

如图,连续重号 3 期的有 1 次。
在这里插入图片描述
3、重号前的遗漏情况

如图,重号前遗漏 2 期的有 1 次。
在这里插入图片描述

二、源数据

节选源数据如下,数据是以 html 表格形式储存的, 标签中 class=“yl01” 表示未命中,class=“chartBall01” 表示命中红球,class=“chartBall02” 表示命中蓝球(文末获取近 100 期数据样本)。

<tr><td class="c_fbf5e3 bd_rt_a">2021090</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">8</td><td class="yl01" style="font-size:xx-small">2</td><td class="chartBall01">05</td><td class="chartBall01">06</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">4</td><td class="yl01" style="font-size:xx-small">6</td><td class="yl01" style="font-size:xx-small">4</td><td class="yl01" style="font-size:xx-small">5</td><td class="chartBall01">12</td><td class="yl01" style="font-size:xx-small">1</td><td class="chartBall01">14</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">13</td><td class="yl01" style="font-size:xx-small">9</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">6</td><td class="yl01" style="font-size:xx-small">9</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">7</td><td class="yl01" style="font-size:xx-small">2</td><td class="chartBall01">27</td><td class="chartBall01">28</td><td class="yl01" style="font-size:xx-small">4</td><td class="yl01" style="font-size:xx-small">13</td><td class="yl01" style="font-size:xx-small">12</td><td class="yl01" style="font-size:xx-small">8</td><td class="yl01" style="font-size:xx-small">7</td><td class="v_line"></td><td class="yl01" style="font-size:xx-small">4</td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">42</td><td class="yl01" style="font-size:xx-small">3</td><td class="yl01" style="font-size:xx-small">8</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">16</td><td class="chartBall02">08</td><td class="yl01" style="font-size:xx-small">10</td><td class="yl01" style="font-size:xx-small">13</td><td class="yl01" style="font-size:xx-small">54</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">11</td><td class="yl01" style="font-size:xx-small">31</td><td class="yl01" style="font-size:xx-small">18</td><td class="yl01" style="font-size:xx-small">25</td></tr><tr><td class="c_fbf5e3 bd_rt_a">2021091</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">9</td><td class="chartBall01">04</td><td class="yl01" style="font-size:xx-small">1</td><td class="chartBall01">06</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">7</td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">6</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">3</td><td class="chartBall01">16</td><td class="yl01" style="font-size:xx-small">14</td><td class="yl01" style="font-size:xx-small">10</td><td class="yl01" style="font-size:xx-small">3</td><td class="yl01" style="font-size:xx-small">6</td><td class="yl01" style="font-size:xx-small">7</td><td class="yl01" style="font-size:xx-small">10</td><td class="yl01" style="font-size:xx-small">2</td><td class="chartBall01">24</td><td class="yl01" style="font-size:xx-small">8</td><td class="chartBall01">26</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">14</td><td class="yl01" style="font-size:xx-small">13</td><td class="yl01" style="font-size:xx-small">9</td><td class="chartBall01">33</td><td class="v_line"></td><td class="yl01" style="font-size:xx-small">5</td><td class="yl01" style="font-size:xx-small">6</td><td class="yl01" style="font-size:xx-small">43</td><td class="yl01" style="font-size:xx-small">4</td><td class="yl01" style="font-size:xx-small">9</td><td class="yl01" style="font-size:xx-small">3</td><td class="yl01" style="font-size:xx-small">17</td><td class="yl01" style="font-size:xx-small">1</td><td class="yl01" style="font-size:xx-small">11</td><td class="yl01" style="font-size:xx-small">14</td><td class="yl01" style="font-size:xx-small">55</td><td class="yl01" style="font-size:xx-small">2</td><td class="yl01" style="font-size:xx-small">12</td><td class="yl01" style="font-size:xx-small">32</td><td class="yl01" style="font-size:xx-small">19</td><td class="chartBall02">16</td></tr>

三、解析实现

1、数据结构

为了便于表示球的命中与颜色、数值,我们可以按以下规则映射:
在这里插入图片描述
那么先用美丽汤把需要的内容捞出来,把所有 标签中表示名字与色号的内容取出,按上述规则映射表示。

soup = BeautifulSoup(res_table, "html.parser")
item_lst = []
for td in soup.find_all('td'):cls = td['class'][0]num = td.stringif cls in ['yl01', 'chartBall01', 'chartBall02']:item_lst.append('-'.join([cls, num]))
print(item_lst[:10])

输出前 10 个预览如下:

['yl01-3', 'yl01-5', 'chartBall01-03', 'yl01-5', 'yl01-1', 'yl01-5', 'chartBall01-07', 'yl01-9', 'yl01-6', 'yl01-6']

但这仅仅是一个超长列表,在此基础上处理起来还找不到头绪,至少要转变成和网页上结构一致的矩阵才好理解吧,那么可以想到利用 numpy 矩阵。先是用 np.array 将普通列表转为 numpy 数组,再利用 reshape 将一维数组转为二维数组,即 100 期 X 49 个球的矩阵。

array = np.array(item_lst).reshape(100, 49)

如图,numpy 矩阵的每一行与原页面结构对应。
在这里插入图片描述
但我们想要进行的是纵向比较分析,比较各期之间的关系,所以还需要再对矩阵进行行列转置。

array_T = array.T  # 矩阵转置,一个元素对应一列

在这里插入图片描述
此时,array_T 中的每一个元素即表示某一色号的近 100 期情况。如果想看红1 球,则是 array_T[0];如果想看红2 球,则是 array_T[1];如果想看蓝1 球,则是 array_T[33](因为红球总共有 33 个,故第一个蓝球列的索引为 33)。为了便于选球,我们可以写一个映射方法:

def trans_col(txt):# 翻译列索引号,如红1=0,红33=32,蓝1=33,蓝16=48if"红"in txt:col = int(txt.replace('红', '')) - 1else:col = int(txt.replace('蓝', '')) + 32return col

接下来就可以正式开始实现统计分析的需求啦!

2、遗漏统计

将转置矩阵和指定色号球所在列传入,获取该列后加入一个结束标记,因至少要出现 1 次未命中 +1 次命中才判定为遗漏 1 期,所以从该列的第二项数据开始判断,若其不等于前一项的值,且当前项为命中,则记录前一项的值(遗漏期数)。之后将记录列表中的表示遗漏的标记 yl01 去除,仅保留期数。

def fun_miss(array, col):# 统计该列中遗漏后命中的次数line = array[col].tolist()order_grp = []for i, v in enumerate(line):if i > 0:if v != line[i - 1] and'chart'in v:order_grp.append(line[i - 1])order_grp = [i.replace('yl01-', '') for i in order_grp]c = dict(Counter(order_grp))result = sorted(c.items(), key=lambda x: int(x[0]))for i in result:print(f"遗漏{i[0]}期后中的次数有{i[1]}次")fun_miss(array_T, trans_col("红1"))  # 执行

在这里插入图片描述
统计排序后输出如下:

遗漏1期后中的次数有4次 遗漏2期后中的次数有2次 遗漏3期后中的次数有3次 遗漏5期后中的次数有2次 遗漏7期后中的次数有2次
遗漏8期后中的次数有1次 遗漏9期后中的次数有2次 遗漏13期后中的次数有1次

3、连续重号统计

与遗漏统计相同,传入两个参数,先确定要选取的色号列。当前项等于前一项,且当前项为命中时表示重号,连续重号时 count 计数 +1,当出现不满足重号条件时表示连续重号中断,记录连续次数,并将计数清零,待下一轮重号出现时重新计数。

def fun_repeat(array, col):# 统计该列中的重号次数line = array[col].tolist()count_grp = []count = 0for i, v in enumerate(line):if i > 0:if v == line[i-1] and'chart'in v:count += 1elif count > 0:count_grp.append(count)count = 0c = dict(Counter(count_grp))result = sorted(c.items(), key=lambda x: x[0])for i in result:print(f"连续重号{i[0]}次的有{i[1]}次")fun_repeat(wt, trans_col("红2"))  # 执行

在这里插入图片描述
统计排序后输出如下:

连续重号1次的有1次 连续重号2次的有1次

4、重号前的遗漏统计

因要出现重号+遗漏才算入,所以至少从第三项数据开始判定。

def fun_return(array, col):# 统计该列中重号前的遗漏次数line = array[col].tolist()order_grp = []for i, v in enumerate(line):if i > 1:if v == line[i - 1] and v != line[i - 2] and'chart'in v:order_grp.append(line[i - 2])order_grp = [i.replace('yl01-', '') for i in order_grp]c = dict(Counter(order_grp))result = sorted(c.items(), key=lambda x: int(x[0]))for i in result:print(f"重号前遗漏{i[0]}期的有{i[1]}次")fun_return(wt, trans_col("红1"))  # 执行

在这里插入图片描述
统计排序后输出如下:

重号前遗漏2期的有1次

四、小结

emmmm…不过如此看来,单单分析一个球是不够滴,还要和其他色号深入对比,有兴趣的同学自己尝试吧哈哈哈!

温馨提示:赌博有风险,本文仅做数据处理技术讨论,不构成任何资金投入建议!(不要怪我标题党啦 )
另外怕大家不会使用,直接给大家准备了写好的,直接下载打开即可使用!
源码放在百度云盘上了需要可以微信扫描下方CSDN官方认证二维码免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17067.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现双色球彩票中奖游戏

目录 前言 一、游戏规则 二、代码实现 编程思想 代码展示 三、结果展示 前言 根据游戏规则&#xff0c;设计一个双色球号码竞猜游戏&#xff0c;根据规则&#xff0c;获得不同的奖项和奖金。 一、游戏规则 二、代码实现 编程思想 设置两个数组&#xff0c;分别记录输入的双色…

Python项目分析:预测双色球福利彩票中奖号码(随便玩玩,不要当真)

前言 双色球是中国福利彩票的一种玩法。 红球一共6组&#xff0c;每组从1-33中抽取一个&#xff0c;六个互相不重复。然后蓝球是从1-16中抽取一个数字&#xff0c;这整个组成的双色球 python从零基础入门到实战&#xff0c;想要源码数据集的&#xff0c;戳我 今天&#xff…

用Python预测双色球福利彩票中奖号码(请不要当真)

前言 双色球是中国福利彩票的一种玩法。 红球一共6组&#xff0c;每组从1-33中抽取一个&#xff0c;六个互相不重复。然后蓝球是从1-16中抽取一个数字&#xff0c;这整个组成的双色球 python从零基础入门到实战 今天&#xff0c;我们就用Python来统计一下各号码的中奖概率&…

Python预测双色球福利彩票中奖号码(随便玩玩,不要当真)

前言 铁子们应该都是听说过双色球的吧 双色球是中国福利彩票的一种玩法 红球一共6组&#xff0c;每组从1-33中抽取一个&#xff0c;六个互相不重复。然后蓝球是从1-16中抽取一个数字&#xff0c;这整个组成的双色球 今天&#xff0c;我们就用Python来统计一下各号码的中奖概…

双色球的程序代码

双色球其实是有个很有趣的小游戏,仅供大家参考和学习,别无他意. 代码: package test;import java.util.Arrays; import java.util.Random; import java.util.Scanner;public class ShuangSeQiu {public static void main(String[] args) throws InterruptedException {//彩票双…

Python项目分析:预测双色球福利彩票中奖号码

前言 大家早好、午好、晚好吖 ❤ ~ 双色球是中国福利彩票的一种玩法。 红球一共6组&#xff0c;每组从1-33中抽取一个&#xff0c;六个互相不重复。 然后蓝球是从1-16中抽取一个数字&#xff0c;这整个组成的双色球 python从零基础入门到实战&#xff0c;想要源码数据集的&…

基于python的数据分析系统,python数据分析经典案例

大家好&#xff0c;本文将围绕利用python进行数据分析案例展开说明&#xff0c;基于python的数据分析系统是一个很多人都想弄明白的事情&#xff0c;想搞清楚基于python的数据分析题目需要先了解以下几个事情。 1、如何利用python进行数据分析 利用python进行数据分析 链接: …

自己的智能AI聊天机器人,可自定义头像,免费html源码分享,粘贴即用!

1.展示效果 效果预览图&#xff1a; 新增小功能&#xff1a; ① 在原有的基础上加入了本地实时存档的功能&#xff0c;按照下面的步骤便可以随时在本地查看以往和智能AI所有的聊天记录哦&#xff01;再也不用担心关闭网页后先前的聊天内容全部消失啦&#xff01; PS&#xff1a…

深度学习实战30-AIGC项目:自动生成思维导图文件,解放双手

大家好,我是微学AI,今天给大家介绍一下深度学习实战30-AIGC项目:自动生成思维导图文件,解放双手,思维导图是一种常见的工具,用于将复杂的信息和概念以图形化方式展示出来。AIGC项目旨在将这种思维导图的创建过程自动化,并通过使用ChatGPT作为生成器,使其变得更智能化和…

AIGC被ChatGPT带火!底层基础算力有望爆发式增长

ChatGPT火爆全球的背后&#xff0c;可以窥见伴随人工智能技术的发展&#xff0c;数字内容的生产方式向着更加高效迈进。ChatGPT属于AIGC的具体应用&#xff0c;而AIGC是技术驱动的数字内容新生产方式。AIGC类产品未来有望成为5G时代新的流量入口&#xff0c;率先受益的有望是AI…

微信没有回车键怎么换行_微信打字怎么换行

聊天换行是我们经常会遇到的情况,但是在微信聊天的时候,不论是手机微信APP还是电脑版微信,很多人都会发现本来想使用enter键换行的,结果却是把刚才的消息发出去了,那么微信打字怎么换行呢?下面就以苹果手机版微信和电脑微信分别为例给大家介绍一下吧。 微信打字怎么换行 …

chatgpt赋能python:Python主动换行的方法

Python主动换行的方法 Python是一种高级编程语言&#xff0c;它的语法简单易学&#xff0c;功能强大&#xff0c;应用范围广泛。在Python编程中&#xff0c;经常会遇到需要换行的情况&#xff0c;例如要在长字符串中插入回车符、将一条代码语句拆成多行等。 本文将介绍Python…

chatgpt智能提效职场办公-ppt怎么转换成word文档

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 将PPT转换成Word文档有多种方法&#xff0c;以下是其中的一种&#xff1a; 打开PPT文件&#xff0c;并选择“文件”选项卡中的“另存为…

目前最强的AI绘画模型——Midjourney v5

文章目录 Midjourney v5 介绍加入社区使用ChatGPT生成提示词正式测试 我想&#xff0c;各类不仅是文字工作领域&#xff0c;艺术设计等相关的行业也应当被彻底颠覆了。 Midjourney v5 介绍 官网&#xff1a;https://www.midjourney.com/home/?callbackUrl%2Fapp%2F 订阅&…

5个超好用的国内AI绘图工具

一、引言 苹果亲自下场嵌入 AI 工具&#xff01;在苹果的官网发布了这样一段描述“Today, we are excited to release optimizations to Core ML for Stable diffusion in macOS 13.1 and iOS 16.2, along with code to get started with deploying to Apple Silicon devices.…

剪映 自动打关键帧 AutoHotkey

牙叔教程 简单易懂 明确目的 做小说推文的话&#xff0c; 前面几分钟肯定要自己打关键帧&#xff0c; 所以这里的自动打关键帧指的是后面几分钟的图片&#xff0c; 对关键帧要求比较高的同学可以划走了, 因为这里介绍的是简单的 上上下下缩放的关键帧 要求 用剪映提取字幕…

chatgpt赋能python:Python如何写字:学习Python绘制字符和字形

Python如何写字&#xff1a;学习Python绘制字符和字形 Python是世界上最受欢迎的编程语言之一&#xff0c;它可以用于创建各种应用&#xff0c;如数据科学、网络开发和机器学习等领域。但是&#xff0c;你是否知道Python还可以用来绘制字符和字形吗&#xff1f; 在本文中&…

chatgpt赋能python:Python如何输入符号——从基础到高级

Python如何输入符号——从基础到高级 Python是一种非常流行的编程语言&#xff0c;它被广泛应用于各种行业和领域。在Python中输入符号是非常重要的基础操作&#xff0c;本文将介绍Python如何输入符号的方法&#xff0c;包括基础的符号输入和高级的符号输入。 基础的符号输入…

chatgpt赋能python:Python中的点怎么打出来?

Python中的点怎么打出来&#xff1f; Python中的点是一个很基本的符号&#xff0c;它在代码中扮演着非常重要的角色。在本文中&#xff0c;我们将解释如何在Python中打出点以及点的作用。 首先&#xff0c;我们需要了解Python中点的使用。在Python中&#xff0c;点通常用作属…

我可能用到的网站和软件

(一)程序员交流的网站 csdn博客 https://www.csdn.net/博客园 博客园 - 开发者的网上家园InfoQ InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦掘金 掘金 (juejin.cn) (二)代码管理工具 github GitHub: Where the world builds software GitHub 有时候卡&…