足球世界杯买球赢面计算

  • 前言
  • 理论基础
  • 实际计算用例:
  • 代码实现
  • 真实数据

前言

此文是个人关于世界杯的一些浅显的看法,实际统计结果和计算方法有出入,可能原因:1)数据量不够。2)比赛双方差距够大导致的。但在双方实力相近的情况下,选择平是一个不错的决定!

理论基础

假设有两只球队甲和乙,在双方实力局等的情况下,赢球概率都为0.5%,则有:

概率
1/4
1/4
1/4
1/4

由此可知:甲胜的概率是1/4,平的概率是1/2,乙胜的概率是1/4。

在正常保本情况下的买入操作为:
甲胜 100,平 200, 乙胜 100 合计400。
赔率对应为:

操作 买入金额 合理赔数
甲胜 100 400
200 400
乙胜 100 400

合计购入400合计,则不亏钱。
反推概率计算公式为:

甲胜:  100/(100+200+100) = 0.25;
平:    200/(100+200+100) = 0.5;
乙胜 : 100/(100+200+100) = 0.25;

因此,可采用体彩公司提供的赔率信息,大致计算出体彩给的各场比赛的预期可赢率。具体方法:

  1. 计算总胜赔数:
总胜赔数 = (甲胜赔率 + 乙胜赔率 + 2*平赔率)*100;
  1. 分别计算甲乙的官方输赢比:
 甲前赔率 = sqrt(甲胜赔数/总胜赔数);乙前赔率 = sqrt(乙胜赔数/总胜赔数);甲的官方赔率 =  甲前赔数/( 甲前赔数+ 乙前赔数);乙的官方赔率 =  乙前赔数/( 甲前赔数+ 乙前赔数);
  1. 在假设按上面规则买了400的前提下,结合甲乙的官方赔率,推测输赢概率与官方赔率刚好相反,反算可赢率(其中保本为1):
甲胜可赢数量= 100*甲胜赔率* 乙的官方赔率^2;
乙胜可赢数量= 100*乙胜赔率* 甲的官方赔率^2;
平可赢数量  = 200*平赔率* 甲的官方赔率* 乙的官方赔率;
可赢率   = (甲胜可赢数量+乙胜可赢数量+平可赢数量)/400;

实际计算用例:

有了上面的基础,接下来引入实际用例计算各种情况下的可赢率:


卡特尔VS荷兰:

 总胜赔数 = (13+1.11+2*6.2)*100 = 2651;卡前赔率 = sqrt(卡胜赔数*100/总胜赔数)=0.7002;荷前赔率 = sqrt(荷胜赔数*100/总胜赔数)=0.2046;卡胜官方赔率 =  卡前赔率/( 卡前赔率+ 荷前赔率)=0.77;荷胜官方赔率 =  荷前赔率/( 卡前赔率+ 荷前赔率)=0.23;可赢率 = (1300*0.23*0.23+111*0.77*0.77+200*6.2*0.23*0.77)/400
=(68.77+65.81+219.60)/400 = 0.885

可赢率为88.5%(低于1)。按100、200、100买入400,可亏损:46

操作 买入金额 合理赔数 实际赔数
卡特尔胜 100 1890 1300
100 285 620
荷兰胜 100 168 111

由此可知,平更有利于买家。为什么计算结果和官方赔率区别较大,可能原因是彩票客户的个人喜好,体彩公司设置的输赢概率和本本方法计算的概率有偏差等等!

实例2:

通过计算可知:

比赛 可赢率 主场合理配数 平合理配数 客场合理配数
加纳Vs乌拉圭 0.71 671 210 265
韩国Vs葡萄牙 0.73 609 207 282
赛尔维亚vs瑞士 0.70 395 200 404
喀麦隆vs巴西 0.82 1296 249 191

代码实现

#include<iostream>
#include <iomanip> // 包含头文件
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;class worldCupGain
{public:worldCupGain(){clear();}void clear(){szCompare = "";dbHomewinRate = 0.0;dbNowinRate = 0.0;dbAwayHomewinRate = 0.0;}// 输出比赛结果void myprintf(){double dbSum = (dbHomewinRate + 2*dbNowinRate + dbAwayHomewinRate)*100;                     // 总赔数double dbHomewinOriRate      = sqrt((dbHomewinRate*100)/dbSum);                             // 主前赔数double dbAwayHomewinOriRate  = sqrt((dbAwayHomewinRate*100)/dbSum);                         // 客前赔数double dbHomewinOfficialRate = dbHomewinOriRate/(dbHomewinOriRate+dbAwayHomewinOriRate);    // 主胜官方赔率 double dbAwayHomewinOfficialRate = 1 - dbHomewinOfficialRate;                               // 客胜官方赔率 // cout<<"主/客场胜官方赔率: "<<dbHomewinOfficialRate<<" "<<dbAwayHomewinOfficialRate<<endl;// 计算可赢率及各个预期合理赔数double dbWinRate = (100*dbHomewinRate*dbAwayHomewinOfficialRate*dbAwayHomewinOfficialRate + \100*dbAwayHomewinRate*dbHomewinOfficialRate*dbHomewinOfficialRate + \200*dbNowinRate*dbHomewinOfficialRate*dbAwayHomewinOfficialRate)/400;                   // 可赢率double dbHome       = 100/dbAwayHomewinOfficialRate/dbAwayHomewinOfficialRate;      // 主胜合理赔数double dbNoWin      = 50/dbAwayHomewinOfficialRate/dbHomewinOfficialRate;           // 平合理赔数double dbAwayHome   = 100/dbHomewinOfficialRate/dbHomewinOfficialRate;              // 客胜合理赔数cout<<szCompare<<"\t"<<dbWinRate<<"\t"<<dbHome<<"\t"<<dbNoWin<<"\t"<<dbAwayHome<<endl;}string szCompare;           // 比赛双方double dbHomewinRate;       // 主场赢赔率double dbNowinRate;         // 平赔率double dbAwayHomewinRate;   // 客场赢赔率
};int main(){int count = 0;cout<<"请输入要查验的比赛数量:";cout<<endl;cin>>count;vector<worldCupGain> vecWorldCupGain;worldCupGain objWorldCupGain;cout<<"请按右边格式输入数据:比赛双方 主场赢赔率 平赔率 客场赢赔率"<<endl;while(count){objWorldCupGain.clear();cin>>objWorldCupGain.szCompare>>objWorldCupGain.dbHomewinRate>>objWorldCupGain.dbNowinRate>>objWorldCupGain.dbAwayHomewinRate;vecWorldCupGain.emplace_back(objWorldCupGain);count--;}cout<<endl<<endl;cout<<"比赛双方"<<"\t"<<"可赢率"<<"\t"<<"主胜合理赔数"<<"\t"<<"平合理赔数"<<"\t"<<"客胜合理赔数"<<endl;for(int index = 0; index < vecWorldCupGain.size(); index++){vecWorldCupGain[index].myprintf();}system("pause");return 0;
}

真实数据

下方数据是世界杯16强的比赛:在双方差距较大的情况下,选择选择一方胜/败更有把握,在双方实力相近(图中为双方 >=2)的情况下,选择平更有把握。


对于50%胜率的比赛,选择多少合适呢?这边统计了双方大于等于某个赔数的数据,共6个项目:2、2.1、2.2、2.3、2.4、2.5。为更客观反应比赛结果:获取了足球体彩20220602-20221203的比赛数据,合计2307条,以每条买入100位基础,得出统计列表。

赔数 主场胜 平胜 客场胜 总平均胜 数据量(条)
2 85.981 84.45 93.04 87 740
2.1 88.245 81.116 91.962 87 571
2.2 86.232 81.87 93.351 87 393
2.3 82.829 84.554 95.283 87 251
2.4 78.642 103.758 82.273 88 95
2.5 104.045 113.182 46.136 87 22

数据表明:足彩每购入100,可亏损13。在双方赔率大于2.4的情况下,购入平时一个不错的选择!

#include<iostream>
#include<fstream>
#include<sstream>
#include <iomanip> // 包含头文件
#include<algorithm>
#include<cmath>
#include<string>
#include<string.h>
#include<vector>
using namespace std;#define bothWinNum 2.4  // 双方赢球赔数大于等于bothWinNum class worldCupGain
{public:worldCupGain(){clear();}void clear(){szCompare = "";left = 0;right = 0;dbHomewinRate = 0.0;dbNowinRate = 0.0;dbAwayHomewinRate = 0.0;}// 输出比赛结果void getObjworldCupGain(string &keep){string tmp = "";int count = 0;for(int i = 0; i < keep.size(); i++){if(keep[i] != ' ' && keep[i] != '\t'){tmp += keep[i];}else{if(tmp.size() < 1) continue;if(count == 0){szCompare = tmp;}else if(count == 1){}else if(count == 2){string kk = "";for(int j = 0; j < tmp.size(); j++){if(tmp[j] != ':'){kk += tmp[j];}else{if(kk.size() < 1) continue;left = stoi(kk);kk ="";}}right = stoi(kk);}else if(count == 3){dbHomewinRate = stod(tmp);}else if(count == 4){dbNowinRate = stod(tmp);}else if(count == 5){dbAwayHomewinRate = stod(tmp);}count++;tmp = "";}}}void mypintf(){//cout<<szCompare<<"\t"<<left<<":"<<right<<"\t"<<dbHomewinRate<<"\t"<<dbNowinRate<<"\t"<<dbAwayHomewinRate<<endl;cout<<left<<":"<<right<<"\t"<<dbHomewinRate<<"\t"<<dbNowinRate<<"\t"<<dbAwayHomewinRate<<endl;}string szCompare;           // 比赛双方int left;int right;double dbHomewinRate;       // 主场赢赔率double dbNowinRate;         // 平赔率double dbAwayHomewinRate;   // 客场赢赔率
};int main(){std::ifstream f{"C:/20220602-20221203basketball.txt", std::ios::binary};std::stringstream ss;ss << f.rdbuf();string data = ss.str();string keep;vector<worldCupGain> vecWorldCupGain;worldCupGain objWorldCupGain;for (auto chr : data) {if(chr != '\n' && chr != '\r') {keep += chr;}else{if(keep.size() < 1) continue;if(strstr(keep.c_str(), "--") != 0) continue;if(strstr(keep.c_str(), "取消") != 0) continue;keep.push_back(' ');objWorldCupGain.clear();objWorldCupGain.getObjworldCupGain(keep);if(objWorldCupGain.dbHomewinRate >=bothWinNum && objWorldCupGain.dbAwayHomewinRate >=bothWinNum){vecWorldCupGain.push_back(objWorldCupGain);}//vecWorldCupGain.push_back(objWorldCupGain);keep = "";}}double sum1 = 0.0;double sum2 = 0.0;double sum3 = 0.0;int num1 = 0, num2 = 0, num3 = 0;for(int index = 0; index < vecWorldCupGain.size(); index++){if(vecWorldCupGain[index].left > vecWorldCupGain[index].right) {num1++;sum1 += 100*vecWorldCupGain[index].dbHomewinRate;}else if(vecWorldCupGain[index].left == vecWorldCupGain[index].right) {num2++;sum2 += 100*vecWorldCupGain[index].dbNowinRate;}else if(vecWorldCupGain[index].left < vecWorldCupGain[index].right){num3++;sum3 += 100*vecWorldCupGain[index].dbAwayHomewinRate;}}double rate1 = sum1/vecWorldCupGain.size();double rate2 = sum2/vecWorldCupGain.size();double rate3 = sum3/vecWorldCupGain.size();int rate = (sum1+sum2+sum3)/vecWorldCupGain.size()/3;cout<<num1<<" "<<num2<<" "<<num3<<endl;cout<<vecWorldCupGain.size()<<"对应的赔率为:"<<rate1<<" "<<rate2<<" "<<rate3<<" "<<rate<<endl;for(int index = 0; index < vecWorldCupGain.size(); index++){vecWorldCupGain[index].mypintf();}system("pause");return 0;
}

数据来源:
–足球体彩20220602-20221203basketball.txt比赛数据 合计2307条
格式:主队(让球)vs客队 半场比分 全场比分 胜 平 负
足彩结果

布莱克本(-1)VS伯明翰 2:0 2:1 1.88 3.13 3.50
米堡(-1)VS哈德斯 0:0 0:0 1.54 3.50 4.95
米尔沃尔(+1)VS西布罗姆 1:1 2:1 2.48 3.08 2.45
谢菲联(-1)VS诺维奇 0:2 2:2 2.02 3.35 2.92
桑德兰(+1)VS伯恩利 2:0 2:4 3.15 3.13 2.00
。。。保存不下,省略了。。。

了解世界杯赔率,让您运气更‘好‘(个人分享)相关推荐

  1. PAT-A1011 World Cup Betting (世界杯赔率)

    A1011 World Cup Betting (世界杯赔率) With the 2010 FIFA World Cup running, football fans the world over w ...

  2. 2018年世界杯赔率预测 -DNN

    # -*- coding: utf-8 -*- ''' Created on 2018年7月2日 @author: user @summary: Predicting the winner of th ...

  3. 2018年世界杯赔率预测

    参考:https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017/kernels # -*- cod ...

  4. 世界杯押注还得看技术流,这个预测AI把赔率也算上了

    胡澎 发自 凹非寺  量子位 报道 | 公众号 QbitAI 世界杯小组赛将收官,你还依然信AI吗? 冷门频出,黑马击败豪强.不少AI模型始料未及. 到底还能不能愉快找到科学规律?或者说足球比赛乃至其 ...

  5. [世界杯]根据赔率计算各种组合概率与赔率

    目录 一.背景 二.数据输入 2.1 赔率示意图 2.2 字典保存数据 三.数据处理 3.1 计算各种组合可能性 3.2 修正概率 四.输出结果 五.代码 一.背景 本文以世界杯体彩"混合过 ...

  6. 威廉希尔赔率分析和结论

    一.1. 20 以下区间统计分析 1. 研究对象: 1. 14.6. 00.12. 00 310 统计: 18 胜2 平 310 比率: 90 % (胜) 10 % (平) 统计分析: 1. 14.6 ...

  7. 再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧

    这两天看到CSDN上一篇同行写的有趣的话题,题目为: 浅谈大数据之足球盘口赔率水位分析的思路与神准预测技巧(一)_linwei_hello的专栏-CSDN博客 因为算是同行文章,本人也做足球大数据分析 ...

  8. 第六篇:方法一(学会自己设置赔率和盘口)

    听起来有点惊世骇俗,其实是所有方法中最简单的一种,既然庄家可以站在玩家的立场去预判注码流向,那么,你为什么不能站在庄家的立场去为比赛设置赔率和盘口?这,决不是庄家的专利,在了解开赔依据之后,要做到这一 ...

  9. 三谈大数据之足球盘口赔率水位分析思路及其实现利器

    前两期导航: 再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧_sundayhost的博客-CSDN博客_欧赔水位如何看 再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧_sundayhost ...

最新文章

  1. Linux LVM 收藏
  2. 在Windows上启用LDAPs
  3. 2015年最值得学习的编程语言是?
  4. js 正则 或者_正则表达式
  5. JavaScript面向对象——深入理解默认的继承方式原型链
  6. 怎么查看linux网关,如何查看linux服务器网关
  7. python gRPC
  8. 在Ubuntu上安装Drone持续集成环境
  9. mdpi ldpi hdpi的区别
  10. android native c++ 打印调用栈
  11. 云表中表单配置内嵌浏览器
  12. 印象笔记粘贴HTML,印象笔记剪藏插件
  13. RS-485 接口 EMC 电路设计
  14. ps 打开失败 提示:暂存盘已满
  15. 柠檬味百香果饮料怎么制作
  16. Activiti7.0实战学习(九):查询历史表中的数据
  17. 视频播放JZVideoPlayer
  18. 「CTS2019 | CTSC2019」氪金手游 解题报告
  19. This must be due to duplicate classes or playing wrongly with class loaders 1
  20. CMA认证与CNAS认可的八大区别,你知道几个?

热门文章

  1. 生物医学文献知识图创建的关系提取
  2. 数字图像与机器视觉基础补充(2)--颜色转换+分割车牌
  3. TNF拮抗剂的结构、功能与结核感染_Wallis2008
  4. 白手起家学习使用flex (5) 在Flash Builder5 中引用 fla 文件中的类( symbol )
  5. 水瓶座名人既水瓶座概论
  6. 关于企业能源管控平台在轧钢行业能源管理中的应用
  7. 计算机网络英文习题(中文及答案解析)
  8. IBM P系列小型机更换电池步骤
  9. 在受控主机上创建文件或目录
  10. 如何在Excel表格中给某一列添加固定筛选项