小白量化彩票实战(6)彩票号码中六保五缩水和旋转矩阵

小白量化彩票实战(6)彩票号码中六保五缩水和旋转矩阵
我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程娱乐的思想来看待。兴趣是学习最大的动力!

我编写彩票软件都有近十多年时间,一直没搞懂彩票号码中六保五缩水和旋转矩阵的原理,我以前使用别人做好的现成缩水公式实现的。
例如选10个号六保五缩水,我使用了别人做好的公式保存为“c10x6d0z6b5.txt”文件。这个意思是选10号,0胆号,中6要保5。全部组合要210注,使用中6要保5只需要18组号码。

 1 2 3 4 5 6
 1 2 3 4 7 8
 1 2 3 4 910
 1 2 3 5 7 9
 1 2 3 5 810
 1 2 3 6 710
 1 2 3 6 8 9
 1 2 4 5 710
 1 2 4 5 8 9
 1 2 4 6 7 9
 1 2 4 6 810
 1 2 5 6 7 8
 1 2 5 6 910
 1 2 7 8 910
 3 4 5 6 7 8
 3 4 5 6 910
 3 4 7 8 910
 5 6 7 8 910

我们读入这个缩水公式,把这个连续号码看作数组或列表下标。这样可以替换为任意10个号码。
这就是很多彩票软件常用的方式,有些彩票软件文件目录中能找到类似的缩水公式。有些彩票书上也印刷出了这些缩水公式给彩民。

小白量化提供了组合号码和缩水公式,我们看看程序和运行结果。

import time
import HP_cp as hcp   #小白量化彩票模块

## 双色球,选M个号码
M=10

##生成 全部组合
print('开始生成全部号码.')
t=time.time()
hm=hcp.SSQ(M)
t=time.time()-t
print(M,'个号码生成结束,生成%d注,耗时 %f 秒。'%(len(hm),t))

##中65缩水
t=time.time()
hm2=hcp.bao(hm,b=5)
t=time.time()-t
print(M,'个号码缩水结束,生成%d注,耗时 %f 秒。'%(len(hm2),t))
print(hm2)

程序运行结果:

开始生成全部号码.
10 个号码生成结束,生成210注,耗时 0.000000 秒。
10 个号码缩水结束,生成18注,耗时 0.000000 秒。
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 7, 8], [1, 2, 3, 4, 9, 10], [1, 2, 3, 5, 7, 9], [1, 2, 3, 5, 8, 10], [1, 2, 3, 6, 7, 10], [1, 2, 3, 6, 8, 9], [1, 2, 4, 5, 7, 10], [1, 2, 4, 5, 8, 9], [1, 2, 4, 6, 7, 9], [1, 2, 4, 6, 8, 10], [1, 2, 5, 6, 7, 8], [1, 2, 5, 6, 9, 10], [1, 2, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8], [3, 4, 5, 6, 9, 10], [3, 4, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10]]

结果与上面的缩水公式差不多。
我们把程序中M值换为12。

M=12

运行结果:

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.001000 秒。
12 个号码缩水结束,生成68注,耗时 0.006000 秒。

我们看到程序缩水后需要68注。还能注数再少点吗?
当然可以。中6要保5最小投注数如下:

7个号 ,18个号 , 49 个号 ,810个号 ,1811个号 , 3012个号 , 5913个号 , 10414个号 , 17415 个号 ,27416 个号 ,42417个号 , 58818个号 , 74819个号 , 98820个号 , 1321

如何再减少投注号码,我做了下面程序测试。

import time
import HP_cp as hcp   #小白量化彩票模块
import random

## 双色球,选M个号码
M=12

##生成 全部组合
print('开始生成全部号码.')
t=time.time()
hm=hcp.SSQ(M)
t=time.time()-t
print(M,'个号码生成结束,生成%d注,耗时 %f 秒。'%(len(hm),t))

##中65缩水
cs=[]
for i in range(50):
    hm2=hm.copy()
    random.shuffle(hm2)   #打乱顺序
    hm3=hcp.bao(hm2,b=5)  ##中65缩水
    cs.append(len(hm3))
    print(len(hm3),end=',')
    
print('\n最少次数:',min(cs))

运行了3次,结果都不相同。

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.001000 秒。
72,69,70,66,74,65,68,65,67,70,74,66,71,72,70,71,67,69,64,66,67,69,68,69,65,67,69,65,69,73,73,68,69,70,70,69,65,67,69,70,69,68,69,70,66,72,67,67,68,66,
最少次数: 64

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.000000 秒。
67,72,69,68,67,69,66,66,69,65,67,66,67,69,72,65,68,67,62,64,71,67,67,69,67,68,68,69,70,67,67,69,70,68,67,70,67,72,65,67,66,67,67,69,71,68,69,69,68,72,
最少次数: 62

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.001000 秒。
70,68,67,63,65,66,69,65,65,69,67,66,67,64,68,69,71,67,64,66,70,65,65,68,72,66,68,70,64,71,72,68,66,67,68,70,68,67,67,67,68,68,68,66,60,70,66,70,73,68,
最少次数: 60

这说明,能否投注最小与号码位置有关。因此需要用号码旋转方式,改变号码组合顺序。

import time
import HP_cp as hcp   #小白量化彩票模块

## 双色球,选M个号码
M=12

##生成 全部组合
print('开始生成全部号码.')
t=time.time()
hm=hcp.SSQ(M)  #生成双色球号码全部组合。
t=time.time()-t
print(M,'个号码生成结束,生成%d注,耗时 %f 秒。'%(len(hm),t))

##中65缩水
cs=[]
for i in range(len(hm)):
    hm2=hm.copy()
    hm2=hcp.revolve(hm2,n=i) #号码旋转
    hm3=hcp.bao(hm2,b=5)  ##中65缩水
    cs.append(len(hm3))
    print(len(hm3),end=',')
    
print('\n最少次数:',min(cs))
print('旋转次数:',cs.index(min(cs)))

程序运行结果:

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.001000 秒。
68,68,84,76,86,77,86,83,84,80,86,81,83,81,82,87,84,...,65,65,65,65,63,63,68,
最少次数: 59
旋转次数: 309

我经过测试研究,已经把研究结果都封装到小白量化金融模块的HP_cp.py文件中了,你们有兴趣可买我写的书,在读者群下载这个模块研究。
如果要输出中6保5缩水公式,可以用如下代码实现:

#购买<零基础搭建量化投资系统>正版书,送小白量化软件源代码。
# https://item.jd.com/61567375505.html
#独狼荷蒲qq:2775205
#小白量化彩票软件开发群:712300766
#小白量化PythonTkinter软件开发群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析

import time
import HP_cp as hcp   #小白量化彩票模块

## 双色球,选M个号码
M=12

##生成 全部组合
print('开始生成全部号码.')
t=time.time()
hm=hcp.SSQ(M)
t=time.time()-t
print(M,'个号码生成结束,生成%d注,耗时 %f 秒。'%(len(hm),t))

#获取旋转密码
xzcs=hcp.cipher[M]

hm2=hcp.revolve(hm,n=xzcs) #号码旋转
hm3=hcp.bao(hm2,b=5)  ##中65缩水
print(M,'个号码缩水结束,生成%d注。'%len(hm3))
print(hm3)

程序运行结果:

开始生成全部号码.
12 个号码生成结束,生成924注,耗时 0.000000 秒。
12 个号码缩水结束,生成59注。
[[1, 3, 6, 7, 10, 12], [1, 3, 6, 8, 9, 10], [1, 3, 6, 8, 11, 12], [1, 3, 7, 8, 9, 11], [1, 3, 9, 10, 11, 12], [1, 4, 5, 6, 7, 8], [1, 4, 5, 6, 9, 10], [1, 4, 5, 6, 11, 12], [1, 4, 5, 7, 9, 11], [1, 4, 5, 7, 10, 12], [1, 4, 5, 8, 9, 12], 

上面这个输出可以当旋转公式,要生成用户投注号,需要按下标替换号码。假定用户选择[5,7,8,12,16,20,22,28,31]这9个号码,可以用下列程序进行组号。

#购买<零基础搭建量化投资系统>正版书,送小白量化软件源代码。
# https://item.jd.com/61567375505.html
#独狼荷蒲qq:2775205
#小白量化彩票软件开发群:712300766
#小白量化PythonTkinter软件开发群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析

import time
import HP_cp as hcp   #小白量化彩票模块

##用户号码
yhhm=[5,7,8,12,16,20,22,28,31]

## 双色球,选M个号码
M=len(yhhm)

##生成 全部组合
print('开始生成全部号码.')
t=time.time()
hm=hcp.SSQ(M)
t=time.time()-t
print(M,'个号码生成结束,生成%d注,耗时 %f 秒。'%(len(hm),t))

#获取旋转密码
xzcs=hcp.cipher[M]
hm2=hcp.revolve(hm,n=xzcs) #号码旋转
hm3=hcp.bao(hm2,b=5)  ##中65缩水
print(M,'个号码缩水结束,生成%d注。'%len(hm3))
hm4=[]
for h in hm3:
    hm5=[]
    for h2 in h:
        hm5.append(yhhm[h2-1])
    hm4.append(hm5)
    print(hm5)

程序运性结果:

开始生成全部号码.
9 个号码生成结束,生成84注,耗时 0.000000 秒。
9 个号码缩水结束,生成8注。
[5, 7, 8, 12, 16, 20]
[5, 7, 8, 12, 22, 28]
[5, 7, 8, 16, 22, 31]
[5, 7, 8, 20, 28, 31]
[5, 7, 12, 16, 28, 31]
[5, 7, 12, 20, 22, 31]
[5, 7, 16, 20, 22, 28]
[8, 12, 16, 20, 22, 28]

上面介绍了中6保5缩水,其他缩水中6保4,胆1中6保4等等,都可以用上面程序进行修改实现。

购买《零基础搭建量化投资系统――以Python为工具》(https://item.jd.com/61567375505.html)一书,就能得到小白量化第二代全部源代码。其中包括完整的HP_cp模块。

#独狼荷蒲qq:2775205 /2886002
#小白量化彩票软件开发群:712300766
#小白量化PythonTkinter软件开发群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析

请点赞本文,你的鼓励是我写作的动力!
请持续关注我的博客,我的进步,就是你的进步!

你可能感兴趣的:(软件开发,量化软件,源代码,小白量化,独狼荷蒲,中6保4,旋转矩阵,彩票软件)