深度学习算法应用——使用LSTM对双色球进行统计与预测

news2025/7/11 0:31:29

前言

福彩双色球的玩法和规则是双色球投注区分为红色球号码区和蓝色球号码区,红色球号码从1-33,蓝色球号码是从1-16。投注方法是,从红色区选出6个不重复的号码再加上蓝色区的一个号组成一个投注组。双色球通过摇奖器确定中奖号码,摇奖时先摇出6个红色球号码,再摇出1个蓝色球号码。如果所选的七个号码与摇出的七个号相同,则是一等奖。
想对规则有更深的理解可以直接访问中国福利彩票官网。

一、概率

双色球的摇奖过程是从33个球里面先取出6个球和再从16个球里面取出一个球,取红球时它的计算过程是取第一个球有33种情况,当第一个球被取走后,到取第二个球有33-1种情况,一直到取第6个球的时候有33-6+1种情况。如果取出的球还要按排列顺序来组合的话,比如(1,2,3)和(3,2,1)在排列中是不一样,则计算公式如下:
在这里插入图片描述
使用阶乘表示:
在这里插入图片描述
但双色球并不考虑顺序的组合问题,则要把用排列计算得出的结果除以重复计算的次数,计算所有组的方式:
使用阶乘表示:
在这里插入图片描述
那么双色球最终的计算是:
在这里插入图片描述

•一等奖(6+1)中奖概率为:红球33选6乘以蓝球16选11/17721088=0.0000056%;
•二等奖(6+0)中奖概率为:红球33选6乘以蓝球16选0=15/17721088=0.0000846%;
•三等奖(5+1)中奖概率为:红球33选5乘以蓝球16选1=162/17721088=0.000914%;
•四等奖(5+0、4+1)中奖概率为:红球33选5乘以蓝球16选0=7695/17721088=0.0434%;
•五等奖(4+0、3+1)中奖概率为:红球33选4乘以蓝球16选0=137475/17721088=0.7758%;
•六等奖(2+1、1+1、0+1)中奖概率为:红球33选2乘以蓝球16选1=1043640/17721088=5.889%;

二、统计

双色球是2003年正式开售的,一年能开出150期左右,到2022年,差不多有3000期左右,统计这3000多期的开奖结果,是不是可以找到某些规律呢?这里把从第一级到最后的一期的所有数据都收集在一个表里面了,借助python就可以对中奖号码组进行统计。
数据的存放格式如下:
在这里插入图片描述

1. 重叠计算

使用Python计算所有往期的中奖号码组出现的重叠次数,
对比两注数据的相同个数

def comparison_list(a,b):
    k = 0
    if len(a) == 6:
        for i in range(len(a)):
            for j in range(len(b)):
                if a[i] == b[j]:
                    k = k + 1

    elif len(a) == 7:
        for i in range(len(a)-1):
            for j in range(len(b)-1):
                if a[i] == b[j]:
                    k += 1
        if a[6] == b[6]:
            k += 1
    return k
# 只统计蓝球区的重复注数
def stat_blue_ball(data):
    blue = copy.deepcopy(data)
    indexs = []
    for i in range(len(blue)):
        blue[i].pop()

    for i in range(len(blue)-1):
        indexs.append(comparison_list(blue[i],blue[i+1]))

    b = [0 for _ in range(7)]

    for i in range(len(b)):
        b[i] = indexs.count(i)

    return b

# 统计整注的重复占比率
def stat_all_ball(list):
    indexs = []

    for i in range(len(list) - 1):
        indexs.append(comparison_list(list[i], list[i + 1]))

    all = [0 for _ in range(8)]

    for i in range(len(all)):
        all[i] = indexs.count(i)

    return all

在这里插入图片描述
统计发现,这么多期开奖结果,有4个数重叠的只有26次,6个数重叠就只有一对,从来没有开出过与旧的中奖号一模一样的一组数,所以,如果选出来的这组数,与往期中的某期的开奖号码重叠的号码太多了,那么中奖的机率会大的降低。

2.统计每个号码出现的次数

统计显示,红球区27是出现最多的数字,33是出现最少的数字,但出现最多的数字与出现最少的数字并不相差很大。

def occurrences(list,name,colors):
    y_data = list
    x_data = []
    for i in range(len(y_data)-1):
        x_data.append(str(i+1))

    y_data.pop(0)
    fig, ax = plt.subplots(figsize=(13, 8))

    ax.bar(x=x_data, height=y_data, color=colors)

    for i in range(len(y_data)):
        plt.text(i, y_data[i], y_data[i],  ha='center', va= 'bottom')  # 显示y轴数据

    # 设置图片名称
    plt.title(name+'历届开奖号码统计')
    # 设置x轴标签名
    plt.xlabel(name)
    # 设置y轴标签名
    plt.ylabel("出现次数")
    plt.savefig(name + "统计图.png", dpi=300)
    # 显示
    # plt.show()

红球出现次数统计图:
在这里插入图片描述
蓝球出现次数统计图:
在这里插入图片描述

3.环比图

统计出现次数概率

def percentage(rad,name):
    data = rad
    pie_labels = []

    for i in range(len(data)):
        pie_labels.append(str(i+1))
    fig, ax = plt.subplots(figsize=(10, 10))
    ax.pie(data, radius=1.1, pctdistance=0.9,labels=pie_labels, wedgeprops=dict(width=0.3, edgecolor="w"),
            autopct='%1.1f%%')

    plt.title("单球出现次统计表")
    # 设置x轴标签名
    plt.xlabel(name)

    plt.savefig(name+"百分比图.png", dpi=300)
    # plt.show()

红球区
在这里插入图片描述
蓝球区
在这里插入图片描述

三、预测

有很多老彩民喜欢研究双色球的预测,而且还分了不同的预测流派,像黄金分割选号、尾数分布选号、相减排除等等方法,是于预测的结果如何,见仁见智了。一般老彩民的预测往往以年或月为单位,进行综合计算后,预测出下期可能开的号码组,但人脑的计算能力与所接受的数据广度是有限的,双色球是2003年正式开售的,到现在2022年大概开了3000多期,那么从以这3000多期为样本,是否能计算出中奖号码的规律?
在过去的10年里,机器学习解决了很多科研难题,那么使用用机器学习来预测双色球走向,是否能比老彩民做得更好,它是否能解决这种无规律数据的预测呢?这种无规律的数据要使用卷积神经网络,显然不是最好的解决方法,毕竟是无规律数据,那根本就是没有特征可以提取,这里只能选择使用长短期记忆(Long short-term memory, LSTM)记忆网络,毕竟是要从历史的数据中学习到可能存在的规律。

四、LSTM

长短期记忆网络(Long short-term memory, LSTM)是一种特殊的RNN模型,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题,相比普通的RNN,LSTM能够在更长的序列中有更好的表现。RNN(Recurrent Neural Network)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,它能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。

1.RNN

Rnn网络结构
在这里插入图片描述
x为当前状态下数据的输入, h表示接收到的上一个节点的输入。
y为当前节点状态下的输出, h`而为传递到下一个节点的输出。
从公式可以得到,输出 h’ 与 x 和 h 的值都相关。而 y 则常常使用 h’ 投入到一个线性层(主要是进行维度映射)然后使用softmax进行分类得到需要的数据。对这里的y如何通过 h’ 计算得到往往看具体模型的使用方式。通过序列形式的输入,就可以得到如下形式的RNN。
在这里插入图片描述

2. LSTM网络结构

右边是LSTM,与左边RNN的比较:
在这里插入图片描述
相比RNN只有一个传递状态 ht ,LSTM有两个传输状态,一个 ct(cell state),和一个 ht(hidden state)。RNN中的 ht等价于LSTM中的ct。其中对于传递下去的 改变得很慢,通常输出的 是上一个状态传过来的 加上一些数值。而ht则在不同节点下往往会有很大的区别。

未完待续

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper中的watch机制

客户端,可以通过在znode上设置watch,实现实时监听znode的变化Watch事件是⼀个⼀次性的触发器,当被设置了Watch的数据发⽣了改变的时候,则服务器将这个改变发送给设置了Watch的客户端⽗节点的创建,修改,删除…

观测云产品更新|新增观测云、SLS 联合解决方案;新增 3 个智能巡检配置文档;新增链路错误追踪查看器等

观测云更新 新增观测云、SLS 联合解决方案 观测云新增 SLS 存储方案,支持阿里云 SLS 用户能够快速使用观测云做数据查看分析。在观测云进行商业版注册/升级时,选择”阿里云账号结算“后,您可以选择SLS 存储方案,将数据存放在自…

SpringBoot SpringBoot 开发实用篇 1 热部署 1.3 热部署范围配置

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇1 热部署1.3 热部署范围配置1.3.1 问题引入1.3.2 热部署配置范围1.3.…

Spring Cloud(十):Spring Cloud Skywalking 以及 JavaAgent

链路追踪组件选型 Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件&…

CASIO程序(线路计算6.0版)

一、扩展变量设置说明 统计各种要素点的数目 各要素点数目表 名 称 平曲线交点 竖曲线变坡点 超高起始点 最多台阶数 线路导线点 数目(个) a b c d e 要素点数目为0时取值 -1 -5/3 0 0 0 备 注 不含起终点 不含起终点 含起…

【LeetCode 力扣】1.两数之和 Java实现 哈希表

题目链接:1.两数之和 1 原题描述: 2 解题思路 初看题目相信大家都能想到枚举的做法,简单来说把数组里面的所有值,均两两组合相加。若结果与target相等,则将两个数字的下标返回即可。 代码实现1: class …

C++入门学习5-共用体,枚举类型,宏定义

入门学习五共用体枚举类型宏定义共用体 共用体也称为联合体,其特点就是用一段连续的内存存储多个不同数据类型的数据,在写法上与结构体相似,但是在同一时刻,共用体中只有一个值是有效的,其大小由共用体中最大的数据类…

做PPT绝对不能错过这5个网站

免费高质量PPT模板网站,建议收藏!1、菜鸟图库 https://www.sucai999.com/pptx.html?vNTYxMjky菜鸟图库里面有各种类型的PPT模板和素材。下载后模板可以直接套用,也可以自己添加素材进行修改。所有素材都一一进行了详细的分类,而且…

【前端】Flet:一款支持python及多语言开发的UI库

文章目录介绍开发生态支持语言运行体验组件API热更新开发计划 Roadmap2022 7月-8月安全手机端桌面端Controls(控件)核心功能用户指引(User education)2022 9月到12月手机端控件(Controls)编程语言支持核心功能介绍 Flet enables …

【设计模式-2】策略模式 - 避免冗余的if-else判断。数据库迁移框架、flink 类型转换框架例子对策略模式的使用

文章目录1. 介绍2. 策略模式结构3. 策略模式使用3.1. 场景一: 表迁移3.2. flink connector类型转换1. 介绍 当if else过多时&#xff0c;可以通过策略模式来进行重构。先定义一个接口&#xff0c;各else处理分支实现这个接口&#xff0c;并定义 < 条件 , 处理类 > 的映射…

NNG 通信模式

NNG 是 nanomsg 的继任版本,纯c语言开发&#xff0c;工作模式分为几种&#xff1a; 1&#xff0c;Pipeline (A One-Way Pipe) 单向通信&#xff0c;类似与生产者消费者模型的消息队列&#xff0c;消息从推方流向拉方。 #include <stdlib.h> #include <stdio.h> #…

[附源码]java毕业设计基于的图书馆管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

RabbitMQ(四):RabbitMQ高级特性

消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 消息可靠性问题&#xff1a;如何确保发送的消息至少被消费—次延迟消息问题&#xff1a;如何实现消息的延迟投递消息堆积问题&#xff1a;如何解决数百万消息堆积&#xff0c;无法及时消费的问题高可用…

面试官:MySQL 上亿大表如何优化?

背景 XX 实例&#xff08;一主一从&#xff09;xxx 告警中每天凌晨在报 SLA 报警&#xff0c;该报警的意思是存在一定的主从延迟。&#xff08;若在此时发生主从切换&#xff0c;需要长时间才可以完成切换&#xff0c;要追延迟来保证主从数据的一致性&#xff09; XX 实例的慢…

Oracle LiveLabs实验:Manage Database Instance and Memory for Oracle Database 21c

概述 此实验申请地址在这里。 实验帮助在这里。 此实验预估完成时间100分钟。 该研讨会介绍了 Oracle 数据库实例的基本知识&#xff0c;并指导您管理 Oracle 数据库的初始化参数和内存结构。 管理初始化参数以在 Oracle 数据库上执行关键任务&#xff0c;例如管理数据库实…

【教学类-08-01】20221010《门牌号(6层*3间 黑色版)》(大班主题《我们的城市》)

效果展示 背景需求&#xff1a; 我的小课题《运用Python设计大班层次性纸类学具的案例研究》获得2022年MHQ小课题立项&#xff0c;在前期的《学号名字描字帖》《身份证》《数字分合》《破译电话号码》的基础上&#xff0c;需要设计更多与大班主题活动书上的主题相关的学习材料。…

利用css 动画实现节流

节流指的避免过于频繁的执行一个函数&#xff0c;例如&#xff1a;一个保存按钮&#xff0c;为了避免重复提交或者服务器考虑&#xff0c;往往需要对点击行为做一定的限制&#xff0c;不然会频繁的请求接口&#xff0c;之前基本上是通过js去控制节流问题&#xff0c;其实css也能…

k-form-design 改成自己组件步骤

1&#xff09;修改package.json {"name": "kk-form-design","version": "1.0.2","private": false,"description": "基于vue、ant-design-vue的表单设计器,可视化开发表单","license": &quo…

Linux下的截图工具 —— Flameshot

一、简介 Flameshot是一款功能强大但易于使用的屏幕截图软件&#xff0c;中文名称火焰截图。Flameshot 简单易用并有一个CLI版本&#xff0c;所以你也可以从命令行来进行截图。Flameshot 是一个Linux发行版中完全免费且开源的截图工具。 特性&#xff1a; 外观可定制化。易于…

数据结构-红黑树

红黑树 二分查找 二叉树 二叉平衡树 平衡因子不超1 查找和二叉查找一样的 删除和插入比较复杂 四种失去平衡的方法 LR 两步 RL 两步 不断旋转比较耗时 进一步改进&#xff1a; 红黑树RBT 调整的次数少 平衡性不如二叉平衡树 &#xff0c; 插入删除频繁的使用红黑树&…