双色球笔记3--输出所有中奖号码

1、功能

本文主要根据中奖类别输出所有中奖号码,双色球奖项分为6种,如下所示:
一等奖(6+1)中奖概率为:红球33选6乘以蓝球16选1=1/17721088=0.0000056%;
二等奖(6+0)中奖概率为:红球33选6乘以蓝球16选1=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%;
共计中奖率:6.71%。

2、代码

根据双色球种类,笔者将其进行如下归类。左边红球表示1到6-右边蓝球表示7,*表示不同的个数,.表示相同的个数,以下计算都约定红球升序。

1)综合预览

该部分计算各项中奖数量、中奖率等问题:

# -*- coding:utf-8 -*-
def fn(x):ret = 1for i in range(1,x+1):ret = ret*ireturn retdef cn(x,y):ret = fn(x)/(fn(y)*fn(x-y))return retif __name__=='__main__':ret = 16*cn(33,6)print('All:',ret)ret1 = 1print('L1',ret1)ret2 = 15print('L2',ret2)ret3 = cn(6,5)*27print('L3',ret3)ret4 = cn(6,5)*27*15+cn(6,4)*cn(27,2)print('L4',ret4)ret5 = cn(6,4)*cn(27,2)*15+cn(6,3)*cn(27,3)print('L5',ret5)ret6 = cn(6,2)*cn(27,4)+cn(6,1)*cn(27,5)+cn(27,6)print('L6',ret6)retSum = ret1+ret2+ret3+ret4+ret5+ret6print('retSum:',retSum)print('Rate:',1.0*retSum/ret)

2)单项实现

根据约定,笔者将1-6等奖的抽象分布归纳如下:

Level1:包括 ......-.
L1只包括1种情况,sum=1

Level2:包括 ......-*
L2只包括1类,sum=15=1*15

Level3:包括 .....*-.
L3只包括1类,sum=162=C(6,5)*C(27,1)*1
说明:红球5个相同1个不同C(6,5)*C(27,1),蓝球相同

Level4:包括 .....*-* 和 ....**-.
L4包括2类,sum=7695=L3*15+C(6,4)*C(27,2)*1
L4_1:.....*-*
说明:红球5个相同1个不同C(6,5)*C(27,1),蓝球不同C(15,1),即L3*15
L4_2:....**-.
说明:红球4个相同2个不同C(6,4)*C(27,2),蓝球相同

Level5:包括 ....**-* 和 ...***-.
L5包括2类,sum=137475=L4_2*15+C(6,3)*C(27,3)*1
L5_1:....**-*
说明:红球4个相同2个不同C(6,2)*C(27,4),蓝球不同C(15,1),即L4_2*15
L5_2:...***-.
说明:红球3个相同3个不同C(6,3)*C(27,3),蓝球相同

Level6:包括 ..****-. 和 .*****-. 以及 ******-.
L6包括3类,sum=1188988=C(6,2)*C(27,4)*1+C(6,1)*C(27,5)*1+C(27,6)*1
L6_1:..****-.
说明:红球2个相同4个不同C(6,2)*C(27,4),篮球相同
L6_2:.*****-.
说明:红球1个相同5个不同C(6,1)*C(27,5),篮球相同
L6_3:******-.
说明:红球0个相同6个不同C(27,6),篮球相同

代码如下:

# -*- coding:utf-8 -*-
import csvdef SaveToCSV(dataList,fileName,rwtype='w'):with open(fileName, rwtype, newline='') as csvfile:writer  = csv.writer(csvfile)for row in dataList:writer.writerow(row)def Level1(lsList):print('\nL1',lsList)print('......-.')retList = [lsList]return retListdef Level2(lsList):print('\nL2',lsList)print('......-*')retList = []for i in range(1,17):tmp = lsList[0:]if(i != lsList[6]):tmp[6] = iretList.append(tmp)return retListdef Level3(lsList):print('\nL3',lsList)print('.....*-.')retList = []leftList = [] #save numbers that can be usedlsList6 = lsList[0:6]for i in range(1,34):if(i not in lsList6):leftList.append(i)lsList5 = [] #save lists which contain 5 numbers in lslistfor i in range(0,len(lsList)-1):lsListBak = lsList[0:]lsListBak.remove(lsList[i])lsList5.append(lsListBak)for i in lsList5:for j in leftList:tmp = i[0:5]tmp.append(j)tmp.sort()retList.append(tmp)retList.sort()for i in retList:i.append(lsList[6])return retListdef Level4_1(lsList):retList = []retListL3 = Level3(lsList)for i in range(1,17):if(i != lsList[6]):for j in retListL3:tmp = j[0:]tmp[6] = iretList.append(tmp)retList.sort()return retList
def Level4_2(lsList):retList = []lsListLeft = lsList[0:6]#get all C(6,4)lsList6_4 = []lsList6_2 = []for i in range(0,5):for j in range(i+1,6):tmpList = [lsListLeft[i],lsListLeft[j]]lsList6_2.append(tmpList)for i in lsList6_2:tmpList = lsListLeft[0:]tmpList.remove(i[0])tmpList.remove(i[1])lsList6_4.append(tmpList)#get all C(27,2)lsList27 = []for i in range(1,34):if(i not in lsListLeft):lsList27.append(i)lsList27_2 = []for i in range(0,26):for j in range(i+1,27):tmpList = [lsList27[i],lsList27[j]]lsList27_2.append(tmpList)#get all C(6,4) and C(27,2)for i in lsList6_4:for j in lsList27_2:tmpList = i[0:]tmpList.append(j[0])tmpList.append(j[1])tmpList.sort()tmpList.append(lsList[6])retList.append(tmpList)           retList.sort()return retList
def Level4(lsList):print('\nL4',lsList)retList = []print('.....*-*')retList4_1 = Level4_1(lsList)print('....**-.')retList4_2 = Level4_2(lsList)for i in retList4_1:retList.append(i)for i in retList4_2:retList.append(i)retList.sort()return retListdef Level5_1(lsList):retList = []retList4_2 = Level4_2(lsList)for i  in range(1,17):if(i != lsList[6]):for j in retList4_2:tmp = j[0:]tmp[6] = iretList.append(tmp)retList.sort()return retList
def Level5_2(lsList):retList = []lsListLeft = lsList[0:6]#get all C(6,3)lsList6_3 = []for i in range(0,4):for j in range(i+1,5):for k in range(j+1,6):tmpList = [lsListLeft[i],lsListLeft[j],lsListLeft[k]]lsList6_3.append(tmpList)#get all C(27,3)lsList27 = []for i in range(1,34):if(i not in lsListLeft):lsList27.append(i)lsList27_3 = []for i in range(0,25):for j in range(i+1,26):for k in range(j+1,27):tmpList = [lsList27[i],lsList27[j],lsList27[k]]lsList27_3.append(tmpList)#get all C(6,3) and C(27,3)for i in lsList6_3:for j in lsList27_3:tmpList = i[0:]tmpList.append(j[0])tmpList.append(j[1])tmpList.append(j[2])tmpList.sort()tmpList.append(lsList[6])retList.append(tmpList)          retList.sort()return retList
def Level5(lsList):print('\nL5',lsList)retList = []print('....**-*')retList5_1 = Level5_1(lsList)print('...***-.')retList5_2 = Level5_2(lsList)for i in retList5_1:retList.append(i)for i in retList5_2:retList.append(i)retList.sort()return retListdef Level6_1(lsList):retList = []#get all C(6,2)lsListLeft = lsList[0:6]lsList6_2 = []for i in range(0,5):for j in range(i+1,6):tmpList = [lsListLeft[i],lsListLeft[j]]lsList6_2.append(tmpList)#get all C(27,4)lsList27 = []for i in range(1,34):if(i not in lsListLeft):lsList27.append(i)lsList27_4 = []for i in range(0,24):for j in range(i+1,25):for k in range(j+1,26):for l in range(k+1,27):tmpList = [lsList27[i],lsList27[j],lsList27[k],lsList27[l]]lsList27_4.append(tmpList)#merge C(6,2) and C(27,4)for i in lsList6_2:for j in lsList27_4:tmpList = i[0:]tmpList.append(j[0])tmpList.append(j[1])tmpList.append(j[2])tmpList.append(j[3])tmpList.sort()tmpList.append(lsList[6])retList.append(tmpList)           retList.sort()return retList
def Level6_2(lsList):retList = []#get all C(6,1)lsListLeft = lsList[0:6]lsList6_1 = []for i in range(0,6):tmpList = [lsListLeft[i]]lsList6_1.append(tmpList)#get all C(27,5)lsList27 = []for i in range(1,34):if(i not in lsListLeft):lsList27.append(i)lsList27_5 = []for i in range(0,23):for j in range(i+1,24):for k in range(j+1,25):for l in range(k+1,26):for m in range(l+1,27):tmpList = [lsList27[i],lsList27[j],lsList27[k],lsList27[l],lsList27[m]]lsList27_5.append(tmpList)#merge C(6,1) and C(27,5)for i in lsList6_1:for j in lsList27_5:tmpList = i[0:]tmpList.append(j[0])tmpList.append(j[1])tmpList.append(j[2])tmpList.append(j[3])tmpList.append(j[4])tmpList.sort()tmpList.append(lsList[6])retList.append(tmpList)          retList.sort()return retList
def Level6_3(lsList):retList = []lsListLeft = lsList[0:6]#get all C(27,6)lsList27 = []for i in range(1,34):if(i not in lsListLeft):lsList27.append(i)lsList27_6 = []for i in range(0,22):for j in range(i+1,23):for k in range(j+1,24):for l in range(k+1,25):for m in range(l+1,26):for n in range(m+1,27):tmpList = [lsList27[i],lsList27[j],lsList27[k],lsList27[l],lsList27[m],lsList27[n]]lsList27_6.append(tmpList)#merge C(27,6)for j in lsList27_6:tmpList = []tmpList.append(j[0])tmpList.append(j[1])tmpList.append(j[2])tmpList.append(j[3])tmpList.append(j[4])tmpList.append(j[5])tmpList.sort()tmpList.append(lsList[6])retList.append(tmpList)            retList.sort()return retList
def Level6(lsList):print('\nL6',lsList)retList = []print('..****-.')retList6_1 = Level6_1(lsList)print('.*****-.')retList6_2 = Level6_2(lsList)print('******-.')retList6_3 = Level6_3(lsList)for i in retList6_1:retList.append(i)for i in retList6_2:retList.append(i)for i in retList6_3:retList.append(i)retList.sort()return retListif __name__=='__main__':lsList = [1,2,3,4,5,10,6]####################################retList1 = Level1(lsList)print('L1 count:',len(retList1))retList1.append(['count',len(retList1)])SaveToCSV(retList1,'Level1.csv','w')    ####################################retList2 = Level2(lsList)print('L2 count:',len(retList2))retList2.append(['count',len(retList2)])SaveToCSV(retList2,'Level2.csv','w')  ####################################retList3 = Level3(lsList)print('L3 count:',len(retList3))retList3.append(['count',len(retList3)])SaveToCSV(retList3,'Level3.csv','w')####################################retList4 = Level4(lsList)print('L4 count:',len(retList4))retList4.append(['count',len(retList4)])SaveToCSV(retList4,'Level4.csv','w')####################################retList5 = Level5(lsList)print('L5 count:',len(retList5))retList5.append(['count',len(retList5)])SaveToCSV(retList5,'Level5.csv','w')####################################retList6 = Level6(lsList)print('L6 count:',len(retList6))retList6.append(['count',len(retList6)])SaveToCSV(retList6,'Level6.csv','w')

3、说明

本代码当前测试环境为python3.5

双色球笔记3--输出所有中奖号码相关推荐

  1. 双色球下期最有可能中奖号码

    很抱歉,我无法给出最有可能中奖的双色球号码.因为双色球是一种随机抽奖游戏,每期开奖号码都是完全随机的,所以没有任何方法可以预测下期中奖号码.建议你不要过于依赖预测中奖号码的方法,而是自己选择自己喜欢的 ...

  2. python中奖号_Python分析彩票记录并预测中奖号码过程详解

    0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至201 ...

  3. 用luasocket读取双色球中奖号码

    其实是蛮简单的一个功能,就是读取这个页面:http://61.129.89.226/fcopen/cp_kjgg_dfw.jsp?lottery_type=ssq&lottery_issue= ...

  4. 20190930双色球中奖号码概率的处理(VC6.0)

    20190930双色球中奖号码概率的处理(VC6.0) 2019/9/30 15:26 https://baike.baidu.com/item/中国福利彩票双色球/8676030?fromtitle ...

  5. 2017年双色球中奖号码

    网络爬虫,又称网页蜘蛛.网络机器人.随着计算机技术的高速发展,互联网中的信息量越来越大,搜索引擎应运而生.传统的搜索引擎会有返回结果不精确等局限性.为了解决传统搜索引擎的局限性,专用型网络爬虫在互联网 ...

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

    前言 大家早好.午好.晚好吖 ❤ ~ 双色球是中国福利彩票的一种玩法. 红球一共6组,每组从1-33中抽取一个,六个互相不重复. 然后蓝球是从1-16中抽取一个数字,这整个组成的双色球 python从 ...

  7. python抓取每期双色球中奖号码,用于分析

    获取每期双色球中奖号码,便于观察,话不多说,代码如下 # -*- coding:utf-8 -*- # __author__ :kusy # __content__:获取每期双色球中奖号码 # __d ...

  8. 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为 01~33,蓝球号码范围为 01~16。双色球每期从 33 个 红球中开出 6 个号码,从 16 个蓝球中开出 1 个号码作为中奖号码,双色球玩

    模拟双色球彩票游戏 玩法说明: 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为 01-33,蓝球号码范围为 01-16.双色球每期从 33 个 红球中开出 6 个号码,从 16 个蓝球中开出 ...

  9. 双色球笔记1--输出所有双色球号码

    双色球笔记1--输出所有双色球号码 双色球是中国福利彩票的一种玩法.双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成. 1. ...

最新文章

  1. ES curl bulk 导入数据
  2. linux -- chcp
  3. 初识Vue,写的一些小练习
  4. VC++下的OpenGL编程
  5. MySQL 优化实战记录 1
  6. Debian 8开启sftp服务
  7. 二 面向对象三大特性
  8. 为什么PostgreSQL比MongoDB还快之完结篇(深挖单点索引查询)
  9. 操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统
  10. 中day参数介绍_浅谈生物制药中的 CHO 细胞培养工艺开发
  11. 8大原则带你秒懂Happens-Before原则
  12. 牛客 2021年度训练联盟热身训练赛第二场 C题Tip to be Palindrome
  13. 东大OJ 2SAT 异或
  14. clousx6机器人怎么导入词库_clousx6词库编程从零入门:变量总结
  15. 自动发卡平台网站源码-带手机版 带多套商户模板
  16. Java部署斗鱼直播,iOS斗鱼直播项目
  17. 安卓微信打开的文档存放在哪里
  18. 希尔密码C语言源代码,希尔密码加密解密(示例代码)
  19. 【2G模组Air202开发】使用LuatTools下载Luat底层Lod及编写第一个程序:流水灯
  20. 【清华大学】操作系统 陈渝 Part4 ——物理内存管理 之 非连续内存分配

热门文章

  1. 自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!
  2. 离散作业用c语言编写覆盖,c语言论文3000字_优秀论文范文3000字_大一论文范文3000字...
  3. android ftp
  4. Postman的API授权、Cookies和证书
  5. iOS开发之加载、滑动翻阅大量图片优化解决方案
  6. hadoop实战(二)
  7. 教程:SurfaceRT生存指南-WinRT8.1越狱运行ARM的exe程序;
  8. 教程03-微擎的数据库数据字典
  9. windows 10 下运行 docker desktop 报错 cannot enable hyper-v service
  10. F28M35 驱动外部SRAM 调试小结