纸牌游戏21点 数学建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

纸牌游戏21点(Blackjack).构造并实施21点游戏的蒙特卡洛模拟21点游戏规则如下:

大多数赌场使用6副牌或8副牌玩这种游戏,以防止“数牌点”,在你的

模拟中使用两副牌(共104张)。只有2位参与者,你和庄家。游戏开始时每人

得到两张牌,对于牌面为2~10的牌,点数和面数相同;对于为人脸(J、Q、K)

的牌,点数为10;牌面为A的牌,点数为1或者11.游戏的目的是得到总数尽

量接近21点的牌,不得超过(超过称“爆了”),并使你得到的总点数多于庄家。

如果开始两张牌的总点数恰为21(A-10或A-人脸),称为21点,自动成为

胜者(若你和庄家都得到21点,则为平局,你的赌注仍在台上)。靠21点赢时,付给你3赔2,即1.5赔1(1元赌注赢1.5元,且1元赌注仍保留)。

如果你和庄家都未得到21点,你想要多少张牌就可以取多少张牌,一次一张,使总数尽量接近21点,如果你超过了21点,就输了,游戏结束。一旦你

对牌的点数满意,你就“打住”,然后庄家按照下列规则取牌:

当庄家牌的点数为17、18、19、20和21时,就打住。若庄家牌的点数小

于或等于16,必然取牌。庄家总把A的点数记为11,除非这样使他或她爆了(这时A的点数记为1)。例如,庄家的A-6组合是17点,不是7点(庄家没有

选择权),且庄家必须打住在17点上。而若庄家有A-4组合(15点),又拿了一

张K,那么新的总点数是15,因为A回到点数1(使之不超过21点),庄家还要

再取牌。

如果庄家超过21点,你就赢了(赢赌注的钱,每1元赌注赢1元)。如果庄家的总点数超过你,你将输掉全部赌注。如果庄家和你的总点数相同,为平局(你不输也不赢)。

赌场中这个游戏的刺激之处在于,庄家开始的两张牌一张明、一张暗,所

以你不知道庄家牌地总点数,必须根据那张明牌赌一把。在这个项目模拟中你

不用考虑这种情况,你需要做的是:用两幅牌做12次游戏,你可以有无限的赌资(不希望吗?),每次下赌2元。两副牌玩过一次后,用两幅新牌(104张)继

续玩。这时记录你的得分(加或者减X 元),然后下一幅牌从0开始。输出是12次游戏的12个结果,可以用平均数或总数决定你的总成绩。

你的策略是什么?完全由你决定!可是这里有一招——假定庄家的牌你都看不到(于是你没有庄家牌这一点信息)。选择一种游戏策略并在整个模拟中运行。给出模拟算法的说明书、计算机程序以及12次游戏的输出结果。

一、模型的建立与求解

21点的蒙特卡罗算法

输出 玩家的得分SCORE 第1步 初始化:COUNTER=0.

第2步 得到[1,13]内的随机数2121,,x ,x y y .计算21,x x 的和SUM1(玩家总点数∑i

i x ),21,y y 的和SUM2(庄家总点数∑i

i y );同时庄

家现出自己的第一张牌1y .

第3步 判断1x 的值,若>10,则将其值改为10,并重新计算SUM1.

第4步 判断2x 的值,若>10,则将其值改为10,并重新计算SUM1.

第5步 判断1y 的值,若>10,则将其值改为10,并重新计算SUM2.

第6步 判断2y 的值,若>10,则将其值改为10,并重新计算SUM2.

第7步 判断1x 的值是否为1,若等于1将其值改为11,重新计算SUM1,并判断SUM1是否大于21,若大于21则将1x 改为1,并重

新计算SUM1,若没有大于21则继续第9步;若

x不为1,直接进行

1

第9步.

第8步判断

x的值是否为1,若等于1将其值改为11,重新计

2

算SUM1,并判断SUM1是否大于21,若大于21则将

x改为1,并重

2

新计算SUM1,若没有大于21则继续第10步;若

x不为1,直接进行

2

第10步.

第9步判断

y的值是否为1,若等于1将其值改为11,重新计

1

算SUM2,并判断SUM2是否大于21,若大于21则将

y改为1,并重

1

新计算SUM2,若没有大于21则继续第11步;若

y不为1,直接进行

1

第11步.

第10步判断

y的值是否为1,若等于1将其值改为11,重新

2

计算SUM2,并判断SUM2是否大于21,若大于21则将

y改为1,并

2

重新计算SUM2,若没有大于21则继续第12步;若

y不为1,直接进

2

行第12步.

第11步玩家判断SUM1是否大于等于18或大于庄家第一张牌

y的两倍,若是则玩家停止取牌,跳到第14步;若没有则继续取牌,1

得到[1,13]内的随机数

x,进行第13步.

i

第12步同第4步和第8步,判断

x的值,若>10,则将其值

i

改为10,并将其值加到SUM1;接着判断

x的值是否为1,若,等于1

i

将其值改为11,重新计算SUM1,并判断SUM1是否大于21,若大于

21则将

x改为1,并重新计算SUM1,若没有大于21则回到第12步;

i

x不为1,直接进行第12步.

i

第13步庄家判断SUM2是否大于16,若是则庄家不取牌,则跳到第16步;否则庄家取牌,得到[1,13]内的随机数

y,进行第

i

15步.

第14步同第6步和第10步,判断

y的值,若>10,则将其值

i

改为10,并将其值加到SUM2;接着判断

y的值是否为1,若,等于1

i

将其值改为11,重新计算SUM1,并判断SUM2是否大于21,若大于21则将

y改为1,并重新计算SUM2,若没有大于21则回到第14步;

i

y不为1,直接回到第14步.

i

第15步比较SUM1和SUM2的大小,

If ( SUM1>21&&SUM2>21) or

(SUM1=21&&SUM2=21),则为平局,得分SCORE=0;

If SUM1=21&&UM2≠21,则玩家赢,得分SCORE=3; If (SUM2=21&&SUM2≠21) or (21>SUM2>SUM1),则庄家赢,得分SCORE=-2;

If 21>SUM1>SUM2 则玩家赢,得分SCORE=2;

If 21>SUM1=SUM2 则为平局,SCORE =0.

第16步输出得分SCORE.

停止.

相关文档
最新文档