Matlab 马尔可夫链预测双色球

Matlab 马尔可夫链预测双色球

前言:彩票是一个坑,千万不要往里面跳。

总是想总是想一夜暴富,所以利用业余时间有在研究彩票,偶尔遇见了这个经典的数学预测算法的思路以及代码,研究了两个月,想和大家分享一下,研究不深,可能会有错误,欢迎指教,相互学习。

简介

马尔可夫(Markov)是俄国著名的数学家。马尔可夫预测法是以马尔可夫的名字命名的一种特殊的市场预测方法。马尔可夫预测法主要用于市场占有率的预测和销售期望利润的预测。就是一种预测事件发生的概率的方法。它是基于马尔可夫链,根据事件的目前状况预测其将来各个时刻(或时期)变动状况的一种预测方法。马尔可夫预测法是对地理、天气、市场、进行预测的基本方法,它是地理预测中常用的重要方法之一。
Matlab 马尔可夫链预测双色球_第1张图片

定义,变形等形式,如有兴趣可以通过
百度
https://baike.baidu.com/item/%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E9%93%BE/6171383?fr=aladdin
维基百科
https://zh.wikipedia.org/wiki/马尔可夫链
https://brilliant.org/wiki/markov-chains/
等了解

定义,看不懂,没关系,通过例子来理解更容易
假如一个人每天干事的状态转移是符合一定概率的,比如一个今天吃水果,那么明天还吃水果的概率是0.3,做实验的概率是0.6,睡觉的概率是0.1。看下表

吃水果 做实验 睡觉
吃水果 0.3 0.6 0.1
做实验 0.5 0.1 0.4
水果 0.2 0.4 0.4
以此类推 预测双色球 只要能够构造这个概率矩阵 就可以了这是我用matlab做的程序分析
load(‘rawdata’) %读取数据
rsize = size(rawdata, 1);%统计数据行数
red = zeros(1,6); %构建红球0矩阵
for line = 1 : 6
a = zeros(33); %构建0概率矩阵
row = 1;
for row= 1 : rsize-1
a(rawdata(row,line),rawdata(row+1,line))=a(rawdata(row,line),rawdata(row+1,line))+1;
end %统计1→1 1→2 。。。等出现次数
sumrow = sum(a,2); %求矩阵每行次数次数的和
pa = a./sumrow;%算每种状态改变的概率
pa(isnan(pa)==1) = 0;%因为会出现n/0的情况,将所有的nan换成0
redlast = zeros(1,33); %建立红球最后一次的0 矩阵 redlast(1,rawdata(rsize,line))=1;%赋值,红球当前状态
redpro = redlast * pa;%预测,红球发生状态改变的概率
[~,red(1,line)]=max(redpro);% 取其中的概率最高的数据
end
disp (red); %输出红球
上面是红球的

下面蓝球的方法差不多,就不再赘述
line = 7;
red = zeros(1,6);
row = 1;
for row= 1 : rsize-1
a(rawdata(row,line),rawdata(row+1,line))=a(rawdata(row,line),rawdata(row+1,line))+1;
end
sumrow = sum(a,2);
pa = a./sumrow;
pa(isnan(pa)==1) = 0;
bluelast = zeros(1,33);
bluelast(1,rawdata(rsize,line))=1;
bluepro = bluelast * pa;
[~,blue]=max(bluepro);
disp (blue);

后来我根据数据输出的结果,买了几期中奖概率依旧很佛系

我改了程序的输出步骤,将每次结果进行统计和比较,评价了这个办法

Matlab 马尔可夫链预测双色球_第2张图片

得到你最高概率不过11%左右,只有高于40%的概率你才能保证你不赔
红球评价的太麻烦,加上心灰意冷,所以就免了。

这是一个非专业人员自己瞎琢磨的,欢迎大神批评指正。
至于其他的预测的模型,我也会试试,等我敲完先评价再分享吧。

你可能感兴趣的:(Matlab 马尔可夫链预测双色球)