本期是关于蒙特卡洛的第一讲,使用蒙特卡洛法预测比赛冠军。可以根据不同的赛制简单地更改代码,适用于不同类型比赛的模拟。另外需要注意的是,在写模拟代码时,默认的是还未划分对阵表,如果已知对阵情况,需要更改相应的代码,固定对阵模式。

本次代码所模拟的赛制为:参赛选手64位,分16个小组首先进行小组赛,每个小组决出一名获胜者进入淘汰赛;淘汰赛在相邻编号小组胜者之间展开,淘汰赛共四轮,分别决出8强,4强,2强,冠军。比赛结果只有输和赢,没有平局。如图1所示。

以下为全部源代码,注释非常详细,大家可以直接下载运行下。

% 使用蒙特卡洛方法预测比赛冠军
% 公众号【数学建模公会】,HCLO4原创
% 20190920%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 赛制 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 模拟赛制为:参赛选手64位,分16个小组首先进行小组赛,每个小组决出一名获胜者进入
% 淘汰赛;淘汰赛在相邻编号小组胜者之间展开,淘汰赛共四轮,分别决出8强,4强,2强,冠军。
% 比赛结果只有输和赢,没有平局%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  胜率矩阵  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 64人对阵,通过历史比赛战绩,得到胜率矩阵winProb。
% 这里我们简单的随机产生一个胜率矩阵。% 随机产生一个胜率矩阵
% winProb(i,j)表示第i个人和第j个人比赛i赢的概率 winProb(i,i)无意义
% winProb(i,j)=1-winProb(j,i)
winProb=rand(64,64);
for i=1:63for j=i+1:64winProb(i,j)=1-winProb(j,i);end
end% 模拟10000轮对阵,使用wintime记录每个选手在10000次模拟中夺冠的次数
wintime=zeros(1,64); %for iter=1:10000  % 总共模拟10000轮对阵%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  小组赛模拟  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 本次模拟的前提假设是还未分小组,并且假设分组是完全随机的% 产生随机分组,每一列代表一个小组,每个小组4人,共16个小组group=reshape(randperm(64),4,16);groupwiner=zeros(1,16); % 记录小组赛胜者% 记录小组赛相互战绩,ifwin(j,k)=1表示j赢了k,ifwin(j,k)=-1表示j输了kifwin=zeros(4); for i=1:16% 从所有选手胜率矩阵winProb中提取小组赛选手胜率矩阵subwinProb=winProb(group(:,i),group(:,i));for j=1:3for k=j+1:4pjk=subwinProb(j,k); %选手j对选手k的胜率if rand<pjk %选手j胜利ifwin(j,k)=1;ifwin(k,j)=-1;endendendnumwin=sum(ifwin==1,2); % 小组赛四个选手胜利场数winerind=find(numwin==max(numwin)); % 找到胜场最多的选手% 如果有多余一个最大胜场选手,随机选一个作为小组出线者temp=randperm(length(winerind));winerind=winerind(temp(1));groupwiner(i)=group(winerind,i);end%%%%%%%%%%%%%%%%%%%%%%%%%%  淘汰赛模拟  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 第一轮淘汰赛 1组对2组,3组对4组,依次类推  %%%%%%%%%%%%%secondwinner=zeros(1,8);for i=1:8player=groupwiner(i*2-1:i*2);  %1组对2组,3组对4组,依次类推%prob表示player1对player2的胜率prob=winProb(player(1),player(2));if rand<probsecondwinner(i)=player(1);elsesecondwinner(i)=player(2);endend%%%%%%%%%%%%%%%%%%%%%%% 第二轮淘汰赛 %%%%%%%%%%%%%%%%%%%%%thirdwinner=zeros(1,4);for i=1:4player=secondwinner(i*2-1:i*2); % player1对player2的胜率prob=winProb(player(1),player(2));if rand<probthirdwinner(i)=player(1);elsethirdwinner(i)=player(2);endend%%%%%%%%%%%%%%%%%%%%%%% 第三轮淘汰赛 %%%%%%%%%%%%%%%%%%%%%fourthwinder=zeros(1,2);for i=1:2player=thirdwinner(i*2-1:i*2); % player1对player2的胜率prob=winProb(player(1),player(2));if rand<probfourthwinder(i)=player(1);elsefourthwinder(i)=player(2);endend%%%%%%%%%%%%%%%%%%%%%%%  决胜局  %%%%%%%%%%%%%%%%%%%%%%player=fourthwinder; % player1对player2的胜率prob=winProb(player(1),player(1));if rand<probwinder=player(1);elsewinder=player(2);end% 本轮模拟的胜者胜次加1wintime(winder)=wintime(winder)+1;endprob_win=wintime/sum(wintime);  % 最终的每个人的夺冠概率disp('每个选手的夺冠概率为')
disp(prob_win)

欢迎关注公众号,获取更多数学建模相关内容:

蒙特卡洛法预测比赛冠军相关推荐

  1. ICCV 2021 | 厉害了!首届 SoMoF 人体序列预测比赛冠军方案分享

    关注公众号,发现CV技术之美 近日阿里巴巴淘系技术多媒体算法团队的同学,以大幅领先第二名的成绩获得了在 ICCV2021 上举办的第一届室外场景下的人体轨迹预测比赛( SoMoF Challenge ...

  2. ICCV 2021 |首届 SoMoF 人体序列预测比赛冠军方案分享

    近日阿里巴巴淘系技术多媒体算法团队的同学,以大幅领先第二名的成绩获得了在 ICCV2021 上举办的第一届室外场景下的人体轨迹预测比赛( SoMoF Challenge )的冠军,同时比赛论文被该 W ...

  3. Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量

    Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...

  4. “打脸”世界杯:AI界没有预测比赛的章鱼保罗

    即便不是足球迷,你也应该听说过章鱼保罗.2010 年南非世界杯,这条八爪鱼预测的比赛结果 8 猜全中,这一不可思议的神奇预测让它受到了全世界球迷的追捧,并赐封其为"预言帝". 在这 ...

  5. 重磅!商汤港中文等将开源ECCV2018MS COCO检测比赛冠军代码库

    重磅!商汤&港中文等将开源ECCV2018MS COCO检测比赛冠军代码库 原文出处: 我爱计算机视觉 来自商汤科技.港中文.浙大.悉尼大学.南洋理工大学的研究人员组成的团队MMDet,赢得了 ...

  6. esrgan_港中文-商汤联合实验室:ECCV2018 PIRM-SR 超分辨率比赛冠军:ESRGAN(已开源)...

    Summary:中科院和京东AI研究院提出:改进SRN人脸检测算法,目前业界最强! Author:Amusi Date:2019-02-09 微信公众号:CVer 原文链接:香港中文大学-商汤联合实验 ...

  7. 【实践】美团外卖图谱推荐比赛冠军经验分享:从多领域优化到AutoML框架

    猜你喜欢 0.[免费下载]2021年12月热门报告盘点1.如何搭建一套个性化推荐系统?2.快手推荐系统精排模型实践.pdf3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

  8. 人工智能既预测世界杯冠军,还帮你“讨债”?

    6月14日,2018年俄罗斯世界杯即将开幕.就在前不久,俄罗斯一名人士,利用人工智能预测了今年的世界杯将会是德国夺冠.说起人工智能,大家脑海里浮现出的都是机器人.高级计算.智能识别等高科技应用,然而人 ...

  9. Kaggle亚马逊比赛冠军专访:利用标签相关性来处理分类问题

    近日,Kaggle Blog上刊登了对「Planet: Understanding the Amazon from Space」比赛冠军的专访,在访问中,我们了解到了冠军选手bestfitting的一 ...

最新文章

  1. Add Binary
  2. 【Python】Python的类和对象(长文系列第⑤篇)
  3. [Recompose] Render Nothing in Place of a Component using Recompose
  4. [推荐]大量 Blazor 学习资源(二)
  5. 字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)
  6. Windows学习总结(18)——Windows运行命令与Win键+快捷键再总结
  7. 技巧:MacOS 中快速复制文件或文件夹路径
  8. 个人账目管理系统oracle,个人账务管理系统(论文).doc
  9. 遥感数据产品分级体系
  10. Mac 不小心断开移动硬盘导致磁盘无法读取和加载(顺利解决!)
  11. Ubuntu安装使用Krita
  12. 出国旅游也能用微信买单了
  13. 【绿盟】检测到目标Strict-Transport-Security响应头缺失
  14. linux svn 忽略指定文件
  15. TI公司与MSP430单片机
  16. 我的北漂之路 北漂如饮水,冷暖自知
  17. php lottery,PHP+Ajax+lottery.js抽奖整个流程
  18. 【毕业设计源码】基于Python的校园生活助手(二手+活动+论坛+新闻)信息系统
  19. python中base64 decode_python2解码base64中文乱码怎么解决?
  20. 干货:史上最实用逃顶绝招十二式!

热门文章

  1. 世卫:乳腺癌已成全球最常见癌症
  2. 山东区域华三金牌总代理,三星级服务器代理商
  3. oracle表数据实例,Oracle创建数据表实例
  4. 批量处理文件名前缀后缀
  5. Golang sort包排序(详细全集)
  6. Multi-objective training of Generative Adversarial Networks with multiple discriminators-论文翻译
  7. 流程控制之分支结构:英制单位英寸与公制单位厘米互换
  8. 编程语言中的 DUCK TYPING|python、c++、java、go
  9. P16[6-4]:PWM驱动直流电机(内含:1.实验现象+2.代码部分/详细注释)
  10. 国标视频平台搭建(一)