数学建模纸牌游戏21点(蒙特卡罗法)_第1页
数学建模纸牌游戏21点(蒙特卡罗法)_第2页
数学建模纸牌游戏21点(蒙特卡罗法)_第3页
数学建模纸牌游戏21点(蒙特卡罗法)_第4页
数学建模纸牌游戏21点(蒙特卡罗法)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学建模,纸牌游戏21点,一.21点的蒙特卡罗算法,第1步初始化:COUNTER=0.第2步得到1,13内的随机数x1,x2,y1,y2计算x1,x2的和SUM1(玩家总点数),的和SUM2(庄家总点数);同时庄家现出自己的第一张牌.第3步判断x1的值,若10,则将其值改为10,并重新计算SUM1.第4步判断x2的值,若10,则将其值改为10,并重新计算SUM1.,第5步判断y1的值,若10,则将其值改为10,并重新计算SUM2.第6步判断y2的值,若10,则将其值改为10,并重新计算SUM2.第7步判断x1的值是否为1,若等于1将其值改为11,重新计算SUM1,并判断SUM1是否大于21,若大于21则将x1改为1,并重新计算SUM1,若没有大于21则继续第9步;若x1不为1,直接进行第9步.,第8步判断x2的值是否为1,若等于1将其值改为11,重新计算SUM1,并判断SUM1是否大于21,若大于21则将x2改为1,并重新计算SUM1,若没有大于21则继续第10步;若x2不为1,直接进行第10步.第9步判断y1的值是否为1,若等于1将其值改为11,重新计算SUM2,并判断SUM2是否大于21,若大于21则将y1改为1,并重新计算SUM2,若没有大于21则继续第11步;若y1不为1,直接进行第11步.,第10步判断y2的值是否为1,若等于1将其值改为11,重新计算SUM2,并判断SUM2是否大于21,若大于21则将y2改为1,并重新计算SUM2,若没有大于21则继续第12步;若y2不为1,直接进行第12步.第11步玩家判断SUM1是否大于等于18或大于庄家第一张牌y1的两倍,若是则玩家停止取牌,跳到第14步;若没有则继续取牌,得到1,13内的随机数xi,进行第13步.,第12步同第4步和第8步,判断xi的值,若10,则将其值改为10,并将其值加到SUM1;接着判断xi的值是否为1,若等于1将其值改为11,重新计算SUM1,并判断SUM1是否大于21,若大于21则将xi改为1,并重新计算SUM1,若没有大于21则回到第12步;若xi不为1,直接进行第12步.第13步庄家判断SUM2是否大于16,若是则庄家不取牌,则跳到第16步;否则庄家取牌,得到1,13内的随机数yi,进行第15步.,第14步同第6步和第10步,判断yi的值,若10,则将其值改为10,并将其值加到SUM2;接着判断yi的值是否为1,若等于1将其值改为11,重新计算SUM1,并判断SUM2是否大于21,若大于21则将yi改为1,并重新计算SUM2,若没有大于21则回到第14步;若yi不为1,直接回到第14步.第15步比较SUM1和SUM2的大小,If(SUM121%产生8*13的矩阵numz=0;numw=0;pz=;pw=;totz=0;%庄家总点数totw=0;%玩家总点数numz,pz,a=choose(numz,pz,a);,totz=totz+pz(numz);numz,pz,a=choose(numz,pz,a);totz=totz+pz(numz);numw,pw,a=choose(numw,pw,a);totw=totw+pw(numw);numw,pw,a=choose(numw,pw,a);totw=totw+pw(numw);while1if(totw18)|(totw(2*pz(1)break;elsenumw,pw,a=choose(numw,pw,a);totw=totw+pw(numw);,endendwhile1if(totz=17)fori=1:numz,ifpz(i)=11pz(i)=1;totz=totz-10;b=1;break;endendifb=0break;endendend,fprintf(玩家总点数SUM1=%dn,totw);fprintf(玩家总点数SUM1=%dn,totz);SCORE=0;if(totw21,elseif21totw保存为dian21.m,functionnum,p,a=choose(num,p,a)while1m=fix(rand(1)*8)+1;n=fix(rand(1)*13)+1;ifa(m,n)=1a(m,n)=0;num=num+1;ifn=1ifnum10n=10;endp=pn;break;endend保存为choose.m然后在matlab中输入dian21,就可以得到如下数据,dian21玩家总点数SUM1=20玩家总点数SUM1=17玩家得分SCORE=2dian21玩家总点数SUM1=20玩家总点数SUM1=22玩家得分SCORE=0dian21玩家总点数SUM1=20玩家总点数SUM1=19玩家得分SCORE=2,dian21玩家总点数SUM1=15玩家总点数SUM1=22玩家得分SCORE=0dian21玩家总点数SUM1=19玩家总点数SUM1=19玩家得分SCORE=0dian21玩家总点数SUM1=14玩家总点数SUM1=18玩家得分SCORE=-2,这些数据都是随机出现的。这种方法并不是很好,下面对上述游戏策略进行该进。,functiony=dian21()n=input(请输入局数:);SUM=0;flag=input(请输入决策数:);%这是一个决策数,我们可以改变其值,测试哪一个值最优fori=1:na=ones(8,13);%产生8*13的矩阵numz=0;numw=0;pz=;pw=;totz=0;%庄家总点数totw=0;%玩家总点数,numz,pz,a=choose(numz,pz,a);totz=totz+pz(numz);numz,pz,a=choose(numz,pz,a);totz=totz+pz(numz);numw,pw,a=choose(numw,pw,a);totw=totw+pw(numw);numw,pw,a=choose(numw,pw,a);totw=totw+pw(numw);while1if(totwflag)%|(totw(2*pz(1)break;elsenumw,pw,a=choose(numw,pw,a);,totw=totw+pw(numw);endendwhile1if(totz=17)fori=1:numz,ifpz(i)=11pz(i)=1;totz=totz-10;b=1;break;endendifb=0break;endendend,%fprintf(玩家总点数=%d,,totw);%fprintf(庄家总点数=%dn,totz);SCORE=0;if(totw21,elseif21totw保存为dian21.m,functionnum,p,a=choose(num,p,a)while1m=fix(rand(1)*8)+1;n=fix(rand(1)*13)+1;ifa(m,n)=1a(m,n)=0;num=num+1;ifn=1ifnum10n=10;endp=pn;break;endend保存为choose.m然后在matlab中输入dian21,dian21请输入局数:100000请输入决策数:21玩家得分平均值SCORE=-1.351880e+00dian21请输入局数:100000请输入决策数:20玩家得分平均值SCORE=-9.434000e-01dian21请输入局数:100000请输入决策数:19玩家得分平均值SCORE=-3.226500e-01dian21请输入局数:100000请输入决策数:18玩家得分平均值SCORE=-1.038300e-01,dian21请输入局数:100000请输入决策数:17玩家得分平均值SCORE=3.641000e-02dian21请输入局数:100000请输入决策数:16玩家得分平均值SCORE=5.810000e-02dian21请输入局数:100000请输入决策数:15玩家得分平均值SCORE=3.657000e-02dian21请输入局数:100000请输入决策数:14玩家得分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论