游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9921|回复: 15

[讨论] 真郁闷 面试的时候被21点游戏的题目给淘汰了

[复制链接]

29

主题

487

帖子

953

积分

高级会员

Rank: 4

积分
953
发表于 2008-7-25 13:16:00 | 显示全部楼层 |阅读模式
郁闷啊,概率真的有那么重要么?
初试,复试都通过了.3试没过.

我跟踪过随机函数,
发现里面不过是个加密算法,根据种子来制定的.
那么计算它的概率到底有多大意义.
真搞不清楚.
我当初认为做数值嘛,就是设计公式,把几个需要出现的时间段的数值用个公式链接起来就可以了.

当时被面试要求设计21点游戏,尽量多赢玩家.

游戏规则:

游戏开始先由系统指定庄家并开始发牌,闲家分别与庄家对抗。发牌后,闲家先要牌力争使自己接近21点且不“爆牌”,即“不超过21点”,闲家选择完毕后,轮到庄家按照规则要牌,庄家结束选择后按照双方的牌点是否接近21点判断输赢。

2-9:牌面数值与分值相同。
10、J、Q、K:均为10分值
A:可为1或者11分值,当计算11分值时会爆牌,则自动记为1分值。

庄家与玩家同点或同爆时庄家胜利.

21点VS爆点时 赔率加倍.


*****************************************************************************

游戏流程设定:

        玩家胜利计数器playerwin=0;//判断是否使用作弊AI
        电脑胜利计数器ownerwin=0;
牌组初始化:把52张扑克牌赋值到数组b[52]上.
        计数器a=0;
        AI计数器a4=16 a5=36; a5为牌卡大于4的牌卡数量、a4为牌卡小于5的牌卡数量.
0,初始化庄家数组owner[5],初始化玩家数组player[5].

1,给庄家1张牌(暗)发牌函数(*owner).if(b[a]>4)a5--;else a4--; //AI计数判断,每次发牌加入AI计数判断下同如2所示
计数器a++

2,给玩家1张牌.发牌函数(*player)      if(b[a]>4)a5--;else a4--; //AI计数判断
计数器a++

3,玩家下注.(玩家输入交互)

4.给庄家1张牌 发牌函数(*owner)       计数器a++

5,给玩家1张牌 发牌函数(*player)       计数器a++

6,玩家决定:a:要牌(if(点数计算(*player)>21)玩家判负 goto 9;else 给玩家发牌 goto 6)计数器a++;b:gotu 7
//点数判断函数(*char) 略.
//发牌函数()略
7, 庄家决定:a:要牌(if(playerwin>ownerwin) 作弊AI();else 判断AI() ) //玩家赢的比我多我就赖皮 ^_ ^
   (if(点数计算(*owner)>21)gotu 8;else 给玩家发牌 goto 7)计数器a++;b:goto 8


8,比较玩家与庄家的点数决定胜负.if((点数计算(*player)>点数计算(*owner))ownerwin++;
                                else playerwin++;

9,牌余判断 if(计数器a>=42) gotu 牌组初始化; else goto 0 //2人玩此游戏所以是a>=42;3人玩次游戏则是37

********************************************************************************

庄家AI:


bool 判断AI()//判断是否要牌
{
  判断临界点a=17;
  owner=点数计算(*owner);
  
  player=点数计算(*(player+1))+10;//电脑AI算牌 玩家桌面点数计算
  
  if(player[1]='a')player-10; // 当玩家第2张抽到A时的情况
  
  if(owner>=player)) return 不要牌;
  //牌面上点数绝对大于玩家时,不要牌.
  if(a5/a4>1)判断临界点a--;  //算牌AI修正临界点值
  else if(a5/a4<1)判断临界点a++;
  else;
  
  if(owner>=判断临界点a)return 不要牌;

  return 要牌;

}

bool 作弊AI()  //判断是否要牌
{
  owner=点数计算(*owner);
  player=点数计算(*player);
  if(owner>=player) return 不要牌;
  
  发牌函数(*owner);a--;//假装发牌,之后C--计数器a还原
  if(点数计算(*owner)>21) return 不要牌

  return 要牌;
}

3试:
当时把这个给他们,结果他们问我为什么临界点时17点.要从数学的角度来分析.
为什么能保证17点的胜率高过玩家.
说实话我也想不通16点啊,暴率蛮高的按每抽过牌的时候也有8/13 (我靠 还刚刚好是黄金分割点).

当时是参考大航海时代2里面酒吧小游戏的21点设计的,几次测试发现是17点.
但是没有那个比较牌面值的AI. 我加上了比较.

后来分析出由于10点牌数最多,所以影响胜率最大的应该是第1张牌拿到10.

29

主题

487

帖子

953

积分

高级会员

Rank: 4

积分
953
 楼主| 发表于 2008-7-25 13:19:00 | 显示全部楼层

Re: 真郁闷 面试的时候被21点游戏的题目给淘汰了

虽然被淘汰了,
但是这个问题如果不解开的话,在心中的心结也解不开.

另外希望听到高手对于那个作弊AI的看法. [em14]

0

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2008-7-26 10:29:00 | 显示全部楼层

Re: 真郁闷 面试的时候被21点游戏的题目给淘汰了

这个17点是你拍脑袋的结果,但是游戏里基本不存在拍脑袋决定的数值,总是受制与其他数据,一节一节环环相扣

另外,这个临界点是可以计算出来的,并且计算过程基本无懈可击,招聘方要的就是这个计算过程

概率真的很重要,我现在还留着大学的课本

0

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2008-7-26 10:35:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

游戏计算几率带来的结果不是着眼于某一次,基本只是统计这个行为在足够大次数上重复的结果,这个时候再别扭的随机函数都会表现得很整齐

8

主题

114

帖子

140

积分

注册会员

Rank: 2

积分
140
QQ
发表于 2008-7-28 11:49:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

当作弊AI判断玩家牌点>庄家牌点, 计算各种情况下是否要牌
1, 玩家非21点, 必要牌(因为不要也是输)
2, 玩家21点, 判断是否要牌(因为暴了会被翻倍)
   2-1, 无论如何不会暴的情况, 如1+5=6 or 16等等, 则必要牌
   2-2, 可能会暴的情况, 这一步应当精确计算, 即根据当时的牌面情况来代入公式得出结论
例:玩家K+Q=20点, 庄家K+1+5=16点
   统计剩余牌面为10*13,9*4,8*4,7*4,6*4,5*3,4*4,3*4,2*4,1*3; 共47种
   统计直接暴的情况,即摸到10*13,9*4,8*4,,7*4,6*4; 共29种
   统计直接赢的情况,即摸到5*3,4*4(平也算庄赢); 共7种
   统计不暴也不赢的情况,即摸到3*4,2*4,1*3; 共11种
   设赌注为M, 则不要牌战绩X=-M
              要牌则战绩X=-2M*29/47-M*7/47+M*11/47=-53/47 M 很显然亏了, 不能要牌
其他情况下公式依次类推

8

主题

114

帖子

140

积分

注册会员

Rank: 2

积分
140
QQ
发表于 2008-7-28 12:02:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

当然AI甚至可以深究不暴也不赢的后续情况, 即在7/47后的各种可能
思路和计算都是重复的, 就不写了
这些属于未确定战绩的补偿, 最后补偿在-M*7/47这一项, 只可能大不可能小(因为小就不继续要牌了)

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-7-30 09:01:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

庄家AI
庄家由电脑控制,为了多赢自然是会作弊的,它能知道玩家手上的牌,并可以最后做决定。
那么:
1、庄家手里的牌的点数小于或等于11,则庄家必要牌。(优先级别最高)
2、玩家有人手里牌21点,而庄家手里牌不到21点,要分析爆率再决定要牌,因为爆了赔的多。
3、玩家有人手里牌的点数比庄家大且该玩家手里牌的点数并没超过21,庄家必要牌。(可以选定一个几率,使得电脑作弊不那么明显)
4、所有玩家手里牌的点数都不比庄家大,庄家不要牌。(可以灵活掌握,避免玩家发现电脑作弊)

抛开玩家或电脑的要牌AI(去掉了特殊情况,1看就知道100%要牌还是100%不要牌的情况)
自己手中牌的张数 X (可知)
初始时牌的总张数52
自己手里牌的总点数 A (可知)(A 取值范围 12-20)(特殊情况不计入讨论,1作11点的时候另讨论)
对应自己手里牌的爆牌点数 B(可算)(对应取值 10-2) 公式B=22-A
手里拥有爆牌点数及此点数以上的牌的张数 Z (可算)(注:Z<=X)

再要一张牌而不爆牌的几率=(84-4A-X+Z)/(52-X)
当这个几率大于50% 可以要牌,小于50% 则不要牌。
由此公式推可以要牌时A的最大值,即要牌的临界点
A<14+(4+2Z-X)/8
不考虑X的超极端情况,即X>4且Z=0,或X>6且Z=1,或X>8且Z=2。
A的最大值为14。
即玩家手上牌的总点数小于或等于14点时要牌,大于14点则不要牌。
下面的是数据 左边的是手中所持牌,当要牌几率大于50%就要牌。
要牌是说再要1张牌而牌不超21点,即不爆的几率。

手中牌的总点数为12时                                                              要牌
1        1                                                                0.68
1        1        1        1        2        2        2        2                0.64
1        1        1        1        2        2        4                        0.64
1        1        1        1        2        3        3                        0.64
1        1        1        1        2        6                                0.65
1        1        1        1        3        5                                0.65
1        1        1        1        4        4                                0.65
1        1        1        1        8                                        0.66
1        1        1        2        2        2        3                        0.64
1        1        1        2        2        5                                0.65
1        1        1        2        3        4                                0.65
1        1        1        2        7                                        0.66
1        1        1        3        3        3                                0.65
1        1        1        3        6                                        0.66
1        1        1        4        5                                        0.66
1        1        1        9                                                0.67
1        1        2        2        2        4                                0.65
1        1        2        2        3        3                                0.65
1        1        2        2        6                                        0.66
1        1        2        3        5                                        0.66
1        1        2        4        4                                        0.66
1        1        2        8                                                0.67
1        1        3        3        4                                        0.66
1        1        3        7                                                0.67
1        1        4        6                                                0.67
1        1        5        5                                                0.67
1        1        10                                                        0.69
2        2        2        2        4                                        0.66
2        2        2        3        3                                        0.66
2        2        2        6                                                0.67
2        2        3        5                                                0.67
2        2        4        4                                                0.67
2        2        8                                                        0.67
2        3        3        4                                                0.67
2        3        7                                                        0.67
2        4        6                                                        0.67
2        5        5                                                        0.67
2        10                                                                0.70
3        3        3        3                                                0.67
3        3        6                                                        0.67
3        4        5                                                        0.67
3        9                                                                0.68
4        4        4                                                        0.67
4        8                                                                0.68
5        7                                                                0.68
6        6                                                                0.68
平均要牌率是66%

                                                                       
手中牌的总点数为13时                                                              要牌
1        1        1                                                        0.59
1        2                                                                0.60
1        1        1        1        2        2        2        3                0.55
1        1        1        1        2        2        5                        0.56
1        1        1        1        2        3        4                        0.56
1        1        1        1        2        7                                0.57
1        1        1        1        3        3        3                        0.56
1        1        1        1        3        6                                0.57
1        1        1        1        4        5                                0.57
1        1        1        1        9                                        0.60
1        1        1        2        2        2        4                        0.56
1        1        1        2        2        3        3                        0.56
1        1        1        2        2        6                                0.57
1        1        1        2        3        5                                0.57
1        1        1        2        4        4                                0.57
1        1        1        2        8                                        0.57
1        1        1        3        3        4                                0.57
1        1        1        3        7                                        0.57
1        1        1        4        6                                        0.57
1        1        1        5        5                                        0.57
1        1        2        2        2        2        3                        0.56
1        1        2        2        2        5                                0.57
1        1        2        2        3        4                                0.57
1        1        2        2        7                                        0.57
1        1        2        3        3        3                                0.57
1        1        2        3        6                                        0.57
1        1        2        4        5                                        0.57
1        1        2        9                                                0.60
1        1        3        3        5                                        0.57
1        1        3        4        4                                        0.57
1        1        3        8                                                0.58
1        1        4        7                                                0.58
1        1        5        6                                                0.58
1        2        2        2        2        4                                0.57
1        2        2        2        3        3                                0.57
1        2        2        2        6                                        0.57
1        2        2        3        5                                        0.57
1        2        2        4        4                                        0.57
1        2        2        8                                                0.58
1        2        3        3        4                                        0.57
1        2        3        7                                                0.58
1        2        4        6                                                0.58
1        2        5        5                                                0.58
1        2        10                                                        0.61
1        3        3        3        3                                        0.57
1        3        3        6                                                0.58
1        3        4        5                                                0.58
1        3        9                                                        0.61
1        4        4        4                                                0.58
1        4        8                                                        0.59
1        5        7                                                        0.59
1        6        6                                                        0.59
2        2        2        2        5                                        0.57
2        2        2        3        4                                        0.57
2        2        2        7                                                0.58
2        2        3        6                                                0.58
2        2        4        5                                                0.58
2        2        9                                                        0.61
2        3        4        4                                                0.58
2        3        8                                                        0.59
2        4        7                                                        0.59
2        5        6                                                        0.59
3        3        3        4                                                0.58
3        3        7                                                        0.59
3        4        6                                                        0.59
3        5        5                                                        0.59
3        10                                                                0.62
4        4        5                                                        0.59
4        9                                                                0.62
5        8                                                                0.60
6        7                                                                0.60
平均要牌率是58%

                                                                       
手中牌的总点数为14时                                                              要牌
1        1        1        1                                                0.50
1        3                                                                0.52
1        1        1        1        2        2        2        4                0.45
1        1        1        1        2        2        3        3                0.45
1        1        1        1        2        2        6                        0.47
1        1        1        1        2        3        5                        0.47
1        1        1        1        2        4        4                        0.47
1        1        1        1        2        8                                0.50
1        1        1        1        3        3        4                        0.47
1        1        1        1        3        7                                0.48
1        1        1        1        4        6                                0.48
1        1        1        1        5        5                                0.48
1        1        1        1        10                                        0.51
1        1        1        2        2        2        2        3                0.45
1        1        1        2        2        2        5                        0.47
1        1        1        2        2        3        4                        0.47
1        1        1        2        2        7                                0.48
1        1        1        2        3        3        3                        0.47
1        1        1        2        3        6                                0.48
1        1        1        2        4        5                                0.48
1        1        1        2        9                                        0.51
1        1        1        3        3        5                                0.48
1        1        1        3        4        4                                0.48
1        1        1        3        8                                        0.51
1        1        1        4        7                                        0.49
1        1        1        5        6                                        0.49
1        1        2        2        2        2        4                        0.47
1        1        2        2        2        3        3                        0.47
1        1        2        2        2        6                                0.48
1        1        2        2        3        5                                0.48
1        1        2        2        4        4                                0.48
1        1        2        2        8                                        0.51
1        1        2        3        3        4                                0.48
1        1        2        3        7                                        0.49
1        1        2        4        6                                        0.49
1        1        2        5        5                                        0.49
1        1        2        10                                                0.52
1        1        3        3        3        3                                0.48
1        1        3        3        6                                        0.49
1        1        3        4        5                                        0.49
1        1        3        9                                                0.52
1        1        4        4        4                                        0.49
1        1        4        8                                                0.52
1        1        5        7                                                0.50
1        1        6        6                                                0.50
1        2        2        2        2        5                                0.48
1        2        2        2        3        4                                0.48
1        2        2        2        7                                        0.49
1        2        2        3        6                                        0.49
1        2        2        4        5                                        0.49
1        2        2        9                                                0.52
1        2        3        3        5                                        0.49
1        2        3        4        4                                        0.49
1        2        3        8                                                0.52
1        2        4        7                                                0.50
1        2        5        6                                                0.50
1        3        3        3        4                                        0.49
1        3        3        7                                                0.50
1        3        4        6                                                0.50
1        3        5        5                                                0.50
1        3        10                                                        0.53
1        4        4        5                                                0.50
1        4        9                                                        0.53
1        5        8                                                        0.53
1        6        7                                                        0.51
2        2        2        2        3        3                                0.48
2        2        2        2        6                                        0.49
2        2        2        3        5                                        0.49
2        2        2        4        4                                        0.49
2        2        2        8                                                0.52
2        2        3        3        4                                        0.49
2        2        3        7                                                0.50
2        2        4        6                                                0.50
2        2        5        5                                                0.50
2        2        10                                                        0.53
2        3        3        3        3                                        0.49
2        3        3        6                                                0.50
2        3        4        5                                                0.50
2        3        9                                                        0.53
2        4        4        4                                                0.50
2        4        8                                                        0.53
2        5        7                                                        0.51
2        6        6                                                        0.51
3        3        3        5                                                0.50
3        3        4        4                                                0.50
3        3        8                                                        0.53
3        4        7                                                        0.51
3        5        6                                                        0.51
4        4        6                                                        0.51
4        5        5                                                        0.51
4        10                                                                0.54
5        9                                                                0.54
6        8                                                                0.54
7        7                                                                0.52
平均要牌率是50%

                                                                       
手中牌的总点数为15时                                                              要牌
1        1        1        2                                                0.42
1        1        3                                                        0.43
1        2        2                                                        0.43
1        4                                                                0.44
1        1        1        1        2        2        2        2        3        0.35
1        1        1        1        2        2        2        5                0.36
1        1        1        1        2        2        3        4                0.36
1        1        1        1        2        2        7                        0.40
1        1        1        1        2        3        3        3                0.36
1        1        1        1        2        3        6                        0.38
1        1        1        1        2        4        5                        0.38
1        1        1        1        2        9                                0.41
1        1        1        1        3        3        5                        0.38
1        1        1        1        3        4        4                        0.38
1        1        1        1        3        8                                0.41
1        1        1        1        4        7                                0.41
1        1        1        1        5        6                                0.39
1        1        1        2        2        2        2        4                0.36
1        1        1        2        2        2        3        3                0.36
1        1        1        2        2        2        6                        0.38
1        1        1        2        2        3        5                        0.38
1        1        1        2        2        4        4                        0.38
1        1        1        2        2        8                                0.41
1        1        1        2        3        3        4                        0.38
1        1        1        2        3        7                                0.41
1        1        1        2        4        6                                0.39
1        1        1        2        5        5                                0.39
1        1        1        2        10                                        0.43
1        1        1        3        3        3        3                        0.38
1        1        1        3        3        6                                0.39
1        1        1        3        4        5                                0.39
1        1        1        3        9                                        0.43
1        1        1        4        4        4                                0.39
1        1        1        4        8                                        0.43
1        1        1        5        7                                        0.43
1        1        1        6        6                                        0.40
1        1        2        2        2        2        5                        0.38
1        1        2        2        2        3        4                        0.38
1        1        2        2        2        7                                0.41
1        1        2        2        3        3        3                        0.38
1        1        2        2        3        6                                0.39
1        1        2        2        4        5                                0.39
1        1        2        2        9                                        0.43
1        1        2        3        3        5                                0.39
1        1        2        3        4        4                                0.39
1        1        2        3        8                                        0.43
1        1        2        4        7                                        0.43
1        1        2        5        6                                        0.40
1        1        3        3        3        4                                0.39
1        1        3        3        7                                        0.43
1        1        3        4        6                                        0.40
1        1        3        5        5                                        0.40
1        1        3        10                                                0.44
1        2        2        2        2        3        3                        0.38
1        2        2        2        2        6                                0.39
1        2        2        2        3        5                                0.39
1        2        2        2        4        4                                0.39
1        2        2        2        8                                        0.43
1        2        2        3        3        4                                0.39
1        2        2        3        7                                        0.43
1        2        2        4        6                                        0.40
1        2        2        5        5                                        0.40
1        2        2        10                                                0.44
1        2        3        3        3        3                                0.39
1        2        3        3        6                                        0.40
1        2        3        4        5                                        0.40
1        2        3        9                                                0.44
1        2        4        4        4                                        0.40
1        2        4        8                                                0.44
1        2        5        7                                                0.44
1        2        6        6                                                0.42
1        3        3        3        5                                        0.40
1        3        3        4        4                                        0.40
1        3        3        8                                                0.44
1        3        4        7                                                0.44
1        3        5        6                                                0.42
1        4        4        6                                                0.42
1        4        5        5                                                0.42
1        4        10                                                        0.45
1        5        9                                                        0.45
1        6        8                                                        0.45
1        7        7                                                        0.45
2        2        2        2        3        4                                0.39
2        2        2        2        7                                        0.43
2        2        2        3        3        3                                0.39
2        2        2        3        6                                        0.40
2        2        2        4        5                                        0.40
2        2        2        9                                                0.44
2        2        3        3        5                                        0.40
2        2        3        4        4                                        0.40
2        2        3        8                                                0.44
2        2        4        7                                                0.44
2        2        5        6                                                0.42
2        3        3        3        4                                        0.40
2        3        3        7                                                0.44
2        3        4        6                                                0.42
2        3        5        5                                                0.42
2        3        10                                                        0.45
2        4        4        5                                                0.42
2        4        9                                                        0.45
2        5        8                                                        0.45
2        6        7                                                        0.45
3        3        3        6                                                0.42
3        3        4        5                                                0.42
3        3        9                                                        0.45
3        4        4        4                                                0.42
3        4        8                                                        0.45
3        5        7                                                        0.45
3        6        6                                                        0.43
4        4        7                                                        0.45
4        5        6                                                        0.43
5        5        5                                                        0.43
5        10                                                                0.46
6        9                                                                0.46
7        8                                                                0.46
平均要牌率是41%

可见14是一个分界线,在手中牌的点数是14时正好50%的牌型要牌,50%的牌型不要牌。



再来看万恶的1,它即可作1也可以作11。
讨论情况是当玩家手上的1作11用的时候。

16                                                              要牌        <=14        15        16
1        1        1        1        2                        0.32         0.26         0.09         0.34
1        1        1        3                                0.33         0.25         0.08         0.33
1        1        2        2                                0.33         0.25         0.08         0.33
1        1        4                                        0.35         0.24         0.08         0.33
1        2        3                                        0.35         0.24         0.08         0.33
1        5                                                0.36         0.24         0.08         0.32

注:
要牌解释同上
<=14是说要牌后牌面点数超过21,将1只当1用时手中牌的总点数<=14(此时手中牌还具有再要1张牌的潜力)
15是最不好的情况,因为牌面点数变小,而再要牌风险大。
16是没有变化的几率
再往后的各表类推不再做解释                                                                               

17                                                              要牌        <=14        15-16        17
1        1        1        1        3                        0.23         0.26         0.17         0.34
1        1        1        2        2                        0.23         0.26         0.17         0.34
1        1        1        4                                0.25         0.25         0.17         0.33
1        1        2        3                                0.25         0.25         0.17         0.33
1        1        5                                        0.29         0.22         0.16         0.33
1        2        2        2                                0.25         0.25         0.17         0.33
1        2        4                                        0.27         0.24         0.16         0.33
1        3        3                                        0.27         0.24         0.16         0.33
1        6                                                0.30         0.22         0.16         0.32
                                                                               
18                                                              要牌        <=14        15-17        18
1        1        1        1        2        2                0.13         0.26         0.26         0.35
1        1        1        1        4                        0.17         0.23         0.26         0.34
1        1        1        2        3                        0.15         0.26         0.26         0.34
1        1        1        5                                0.19         0.23         0.25         0.33
1        1        2        2        2                        0.15         0.26         0.26         0.34
1        1        2        4                                0.19         0.23         0.25         0.33
1        1        3        3                                0.17         0.25         0.25         0.33
1        1        6                                        0.20         0.22         0.24         0.33
1        2        2        3                                0.17         0.25         0.25         0.33
1        2        5                                        0.20         0.22         0.24         0.33
1        3        4                                        0.20         0.22         0.24         0.33
1        7                                                0.22         0.24         0.22         0.32


                                                                               
19                                                              要牌        <=14        15-18        19
1        1        1        1        2        3                0.07         0.24         0.35         0.35
1        1        1        1        5                        0.09         0.23         0.34         0.34
1        1        1        2        2        2                0.04         0.26         0.35         0.35
1        1        1        2        4                        0.09         0.23         0.34         0.34
1        1        1        3        3                        0.11         0.21         0.34         0.34
1        1        1        6                                0.10         0.25         0.31         0.33
1        1        2        2        3                        0.09         0.23         0.34         0.34
1        1        2        5                                0.10         0.23         0.33         0.33
1        1        3        4                                0.13         0.21         0.33         0.33
1        1        7                                        0.12         0.24         0.31         0.33
1        2        2        2        2                        0.06         0.26         0.34         0.34
1        2        2        4                                0.10         0.23         0.33         0.33
1        2        3        3                                0.13         0.21         0.33         0.33
1        2        6                                        0.12         0.24         0.31         0.33
1        3        5                                        0.14         0.20         0.33         0.33
1        4        4                                        0.14         0.20         0.33         0.33
1        8                                                0.14         0.24         0.30         0.32

从数据上看19的时候再要1张牌还可以,好坏比例几乎各半,没再详细计算。

                                                                               
20                                                              要牌        <=14        15-19        20
1        1        1        1        2        2        2        0.00         0.20         0.44         0.36
1        1        1        1        2        4                0.00         0.22         0.43         0.35
1        1        1        1        3        3                0.00         0.22         0.43         0.35
1        1        1        1        6                        0.00         0.26         0.40         0.34
1        1        1        2        2        3                0.02         0.20         0.43         0.35
1        1        1        2        5                        0.02         0.23         0.40         0.34
1        1        1        3        4                        0.02         0.21         0.43         0.34
1        1        1        7                                0.02         0.25         0.40         0.33
1        1        2        2        2        2                0.04         0.17         0.43         0.35
1        1        2        2        4                        0.04         0.19         0.43         0.34
1        1        2        3        3                        0.04         0.19         0.43         0.34
1        1        2        6                                0.04         0.23         0.40         0.33
1        1        3        5                                0.04         0.23         0.40         0.33
1        1        4        4                                0.04         0.21         0.42         0.33
1        1        8                                        0.04         0.24         0.39         0.33
1        2        2        2        3                        0.06         0.17         0.43         0.34
1        2        2        5                                0.06         0.21         0.40         0.33
1        2        3        4                                0.06         0.19         0.42         0.33
1        2        7                                        0.06         0.22         0.39         0.33
1        3        3        3                                0.06         0.19         0.42         0.33
1        3        6                                        0.06         0.22         0.39         0.33
1        4        5                                        0.06         0.22         0.39         0.33
1        9                                                0.06         0.24         0.38         0.32

从数据上看20的时候绝对不能再要牌了。



不知道这样成不,有没有高人指点下。

2

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2008-7-31 08:56:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

貌似很复杂。。。。

29

主题

487

帖子

953

积分

高级会员

Rank: 4

积分
953
 楼主| 发表于 2008-8-2 18:19:00 | 显示全部楼层

Re:真郁闷 面试的时候被21点游戏的题目给淘汰了

由于抽2张牌的时候a必定以11计算
每张可能出现的点数为  2 3 4 5 6 7 8 9 10 11
那么 抽到10以下的牌数为 2 3 4 5 6 7 8 9  
     抽到10以上的牌为 a,10 j q k  所以单张抽到10的概率最高4/13
所以胜率影响最大的时候是拿到10.

假设第1张牌拿到10,那么第2张牌有可能是 2 3 4 5 6 7 8 9 10 j q k a

//注意:这里只以52张牌计算并未减去那了牌以后的结果.因为后面的AI程序中有修正.
//因为这里用的是估算,并没有确切的数值.

那么8在中间 随机抽取单张卡片的胜率为50% 胜负比为1:1.
拿到18以后的暴率非常高,胜负张数比为3/10 (牌暴掉肯定输,但不暴不一定赢,也就是说拿牌的话,胜率=(1-拿牌前败率)*(3/10)).

由于庄家与玩家同点的时候判定为庄家赢所以庄家只要拿17点就可以达到玩家拿18点的胜率50%.
但是庄家的暴率:胜负张数比为4/9 (牌暴掉肯定输,但不暴不一定赢,也就是说拿牌的话)
胜率=(1-拿牌前败率)*(4/9).
如果庄家拿到16点那么:
庄家的暴率:胜负张数比为5/8超过50%   
胜率=(1-拿牌前败率)*(5/8)). 由于胜负比5/8大于50% 所以庄家拿牌后的胜率会比拿牌前的胜率高.

所以庄家拿到17点就不好再拿了.


而在实际情况下,牌拿了一张就少一张,每拿走一张牌都会影响抽牌胜负比.
在程序实际控制下我们取胜负比的倒数:10/3==3(实际值3.33)  9/4==2(实际值2.25)                                                 8/5==1 (实际值1.6).
                                     a5/a4 (a4,a5是程序前面的计数器牌面的值大于4的a5--,小于5的a4--,正是为了计算牌卡的胜负比)

这就是以下程序的缘由.
**************************************************
//程序中AI临界点的修正

if(a5/a4<2)判断临界点a--;  //算牌修正值

1

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2008-9-15 15:24:00 | 显示全部楼层

Re: 真郁闷 面试的时候被21点游戏的题目给淘汰了

感觉都没给出一个合理的答案啊,
而且很多情况都没考虑到,比如,如果玩家只有10点,庄家,要了一张牌就12点了,这时,庄的点大于玩家的点,则不要牌,那么很容易就看出电脑在作弊.
对于这种情况希望有高手指点下,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-11 05:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表