#好玩东西#六合彩预测,可能吗?

来源:互联网 发布:python 股票数据 编辑:程序博客网 时间:2024/04/29 02:27

闲话

寒假快过完的时候,我爸问我,“你学这个,有没办法预测下一期出什么?不需要准确,只要知道下一期特码的单双大小就好了。”
虽然理论上是不可能的,但是总是要搞一搞才死心。因为我们知道出单双的几率都是0.5,0.5,大小的几率也是0.5,0.5.

爬虫爬取数据

我们可以在网上找到往期六合彩的开彩数据,但是显然我们不可能一个一个地复制粘贴,效率太低也不现实。于是查找资料,简单写了一个爬虫来爬取数据。用nodejs写的,用的express框架,主要代码如下:

var request = require('sync-request');var cheerio = require('cheerio');var fs = require('fs');app.get('/', function(req, res) {    // 资料共74页    // 由于获取资料有时会莫名停止,所以是手动选择页数,多次运行,多次获取    for(var indexpage = 68; indexpage < 74; indexpage++) {        console.log('page:' + indexpage);        // 同步request请求,为了防止获取的数据顺序混乱        var whatIGet = request('GET', 'http://www.lotto-8.com/listltohk.asp?indexpage=' + indexpage + '&orderby=new' , {        });        // 获取成功时,处理数据        if (whatIGet.statusCode == 200) {           $ = cheerio.load(whatIGet.body); // $ is a front-side selector with body            // 处理获取到的html5代码,取得想要的数据            $('.auto-style5').each(function (index, item) {                 if(index > 4 && (index - 2) % 5 == 0){                    console.log(index + ' ' + $(item).html());                    var $item = $(item);                    // 将取到的数据写到文件                    fs.appendFile('result.txt', $item.html() + ' ', 'utf-8',function(){return;});                 }            });        }     }    console.log('over');});

下图就是获取失败时的页面,在获取第43页数据时失败了。因此需要多次手动修改开始获取的资料的页面号。报的错,大概就是超时的意思吧。在此处for(var indexpage = 68; indexpage < 74; indexpage++)
获取失败时的结果
这里写图片描述
经过多次跑后,获取了全部的往期共2163期的特码数,按从近到远的顺序。
这里写图片描述
以下是获取的数据。
共2036期数据

数据统计

统计用matlab进行,代码如下

load result.txt;result = result';countArr = zeros(49, 1);num = size(result); % the number of record for i = 1 : num    countArr(result(i)) = countArr(result(i)) + 1; endda = 0; % 单数xiao = 0; % 双数dan = 0; % 大数shuang = 0; % 小数for i = 1 : num     if result(i) > 25        da = da + 1;    else        xiao = xiao + 1;    end    if (mod(result(i), 2) == 0)         shuang = shuang + 1;    else        dan = dan + 1;    endend    dan    shuang    da    xiao

跑出来的结果如下,
这里写图片描述
可以发现,单数跟双数出的次数基本一致。
而出小的次数比出大的次数多了41次,占所有开码次数的41/2136=0.0190.这是合理的,因为1-49个数中,1-25共25个数算小,26-49共24个数算大,小比大多一个数,占49个数中的1/49=0.0204,大小0.0190差不多。
所以实际出码结果跟预期结果差不多,可以认为出码结无法预测。唯一可以确定的是出小的几率比出大的大一点点,但是这一点点并不足以让买家一直买小而总体赢钱。

结论

不要想太多,要是能预测,六合彩公司早倒闭了。

参考文献

1.爬虫实战-NodeJS爬虫系统-极客学院
2.npm上的request文档
3.npm上的sync-request文档
4.npm上cheerio文档

改进

增加页面获取失败时的处理语句,即让获取失败时从新获取该页面。这样就不用手动修改页数来多次获取了。改为以下代码。

app.get('/', function(req, res) {    // 资料共74页    // 由于获取资料有时会莫名停止,所以是手动选择页数,多次运行,多次获取    for(var indexpage = 1; indexpage < 74; indexpage++) {        console.log('page:' + indexpage);        // 同步request请求,为了防止获取的数据顺序混乱        var whatIGet = request('GET', 'http://www.lotto-8.com/listltohk.asp?indexpage=' + indexpage + '&orderby=new' , {        });        // 获取成功时,处理数据        if (whatIGet.statusCode == 200) {           $ = cheerio.load(whatIGet.body); // $ is a front-side selector with body            // 处理获取到的html5代码,取得想要的数据            $('.auto-style5').each(function (index, item) {                 if(index > 4 && (index - 2) % 5 == 0){                    console.log(index + ' ' + $(item).html());                    var $item = $(item);                    // 将取到的数据写到文件                    fs.appendFile('result.txt', $item.html() + ' ', 'utf-8',function(){return;});                 }            });        } else {            // 当网页获取失败时,从新获取页面            indexpage = indexpage - 1;        }    }    console.log('over');});

跑了一遍,果然一次到底。

0 0
原创粉丝点击