博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
双色球笔记3--输出所有中奖号码
阅读量:4289 次
发布时间:2019-05-27

本文共 9255 字,大约阅读时间需要 30 分钟。

双色球笔记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 = 1	for i in range(1,x+1):		ret = ret*i	return 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 = 1	print('L1',ret1)	ret2 = 15	print('L2',ret2)	ret3 = cn(6,5)*27	print('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+ret6	print('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] = i			retList.append(tmp)	return retListdef Level3(lsList):	print('\nL3',lsList)	print('.....*-.')	retList = []	leftList = [] #save numbers that can be used	lsList6 = 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 lslist	for 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] = i				retList.append(tmp)	retList.sort()	return retListdef 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 retListdef 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] = i				retList.append(tmp)	retList.sort()	return retListdef 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 retListdef 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 retListdef 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 retListdef 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 retListdef 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

 

转载地址:http://cflgi.baihongyu.com/

你可能感兴趣的文章
最简单的基于librtmp的示例:发布(FLV通过RTMP发布)
查看>>
Windows/Linux下引用jar包,并用javac/java编译运行
查看>>
HttpClient使用详解
查看>>
HttpClient详解(一)
查看>>
httpclient 请求http数据,json转map
查看>>
git 常用命令
查看>>
用递归方法建立二叉树
查看>>
用递归方法对二叉树进行先序、中序和后序遍历
查看>>
翻转二叉树
查看>>
逆序链表
查看>>
epoll 使用详解
查看>>
stl 中 set容器用法
查看>>
有序数组求交集
查看>>
文字常量区与栈
查看>>
非阻塞connect 编写方法
查看>>
epoll 边沿触发
查看>>
String类 默认生成的函数
查看>>
Linux 软连接与硬链接
查看>>
视音频数据处理入门:H.264视频码流解析
查看>>
视音频数据处理入门:AAC音频码流解析
查看>>