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

作者比较喜欢玩斗地主,所以经常搜集一些网友斗地主的心得,下面这一篇,我感觉写得不错,特转载,与网友分享。原文链接

棋牌游戏推荐:JJ比赛

我比较喜欢在这上面玩,可以赢话费,而且积累的金币其实是可以兑换成人民币的,网上有人回收。

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

声明:本博客的文章,主要是探究斗地主游戏算法的计算机实现。顺便介绍其中的本质性内容。如有游客照此操练,输了家当,本博客概不负责。

  要在一轮斗地主游戏中获胜,手持的牌,需要具备一定的条件。首先是各中牌型需要有控制力,通常,炸弹、顶级牌型是有控制力的牌;其次,各种牌型的资源消耗要足够小。请看下面的例子,来深入理解这段话。

  为简化问题的描述,假设是双人游戏,用红方与黑方来表示。红方手持7、6、5三个单子,而黑方手持8、6、5三个单子,轮到红方出牌。在此残局中,红方先出6能获胜,出5、7都失败。看起来很简单,但为什么出6能获胜,这其中包含的道理是什么?

  要说清楚其中的道理,先要做点铺垫工作。

  首先我们假设,对于最小的单子3,当发出这张单子后,如果要收回控制权,那么手中必须要有顶级大牌,通常,对于单子,顶级大牌就是大王(暂时不考虑炸弹),这时,我们就定义,3消耗了一个完整资源,反过来,也就是说,3的资源产生能力为负值,我们用记号3(-1)来表示。括弧中的-1表示负资源。

  以此类推,单子5,6,7,8的资源产生能力简记为 5(-0.9)、6(-0.8)、7(-0.7)、8(-0.6)。这样假设后,通过简单累加括弧中数字,我们就可以得到红方与黑方的资源产生能力,如下,

  红方资源产生能力 = 5(-0.9) + 6(-0.8) + 7(-0.7) = -0.9 - 0.8 - 0.7 = -2.4
  黑方资源产生能力
= 5(-0.9) + 6(-0.8) + 8(-0.6) = -0.9 - 0.8 - 0.6 = -2.3

  另外,黑方的8,在此残局中,是顶级大牌,属于具有绝对控制权的一张牌,其资源产生能力是正的,算作+1,这样:
红方资源产生能力 = -2.4,
黑方资源产生能力 = -1.3.

  从上面的两个数字中可以看到,红方牌的资源产生能力比黑方弱,表面上看,红方似乎必败。当然,如果是黑方先手,黑红具有资源优势,只要黑方不先出8,红方是没有赢的可能的。这里,红方具有优先决定权,他需要决策出哪张牌。那么红方的决策依据是什么?

  我们来观察双方各自出掉一张牌后的,手中持有牌的资源产生能力,

红方

出牌/ 剩余牌的资源产生能力
5
-1.5
6
-1.6
7 -1.7

黑方
出牌/ 剩余牌的资源产生能力
5
-1.4 -0.4(加算牌张8的绝对控制力)
6
-1.5 -0.5(加算牌张8的绝对控制力)
8
-1.7 -2.7(加算牌张8的绝对控制力)

上述计算结果,我们用图表来表示,看得更清楚一点

  从上图,我们可以看到,当黑方某牌张消失后,黑方剩余牌的资源产生能力将严重恶化,至少不比红方占有,此变化点出现在第二手牌之后。这是黑方的死穴。这样,红方的决策目标就是寻找这样的死穴。
红方先手出5,黑方盖过6后,黑方剩余牌的资源产生能力仍然强于红方。而红方先手出6后,黑方的任何决策都将导致资源产生能力的严重恶化。这充分体现了老子在道德经中所描述的“天之道损有余而补不足”,用在此场合,就是要消耗对方的资源。

  实际上,在斗地主过程中,各位游客也都是这样实践的。这篇文章要说的一个规律是,手持三手同种牌型的先手方,出中间张,胜算概率最大。

【斗地主技巧】斗地主算法逻辑中的天之道<转>的更多相关文章

  1. php中奖算法逻辑

    最近公司有两个活动, 一个是砸蛋活动, 另一个是转盘活动. 后台这边需要做接口进行对接,当用户在前台点击进行抽奖的时候,发送AJAX请求给后台,后台进行业务处理包括记录用户中奖信息,然后返回json格 ...

  2. 提升代码幸福度,五个技巧减少js开发中的if else语句

     壹 ❀ 引 在JavaScript开发中,条件判断语句的使用频率是极高的,而对于条件判断简单易读的if else应该都是大家的首选.可是代码写的久了,我们总是希望自己的代码看着能更为简洁规范(逼格更 ...

  3. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...

  4. Hystrix降级逻辑中如何获取触发的异常

    通过之前Spring Cloud系列教程中的<Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)>一文,我们已经知道如何通过Hystrix来保护自己的服务不被外 ...

  5. 从App业务逻辑中提炼API接口

    2.1 从App业务逻辑中提炼API接口 业务逻辑思维导图 功能-业务逻辑思维导图 基本功能模块关系 功能模块接口UML(设计出API) 在设计稿标注API 编写API文档 2.2 设计API的要点 ...

  6. Aho-Corasick automaton(AC自动机)解析及其在算法竞赛中的典型应用举例

    摘要: 本文主要讲述了AC自动机的基本思想和实现原理,如何构造AC自动机,着重讲解AC自动机在算法竞赛中的一些典型应用. 什么是AC自动机? 如何构造一个AC自动机? AC自动机在算法竞赛中的典型应用 ...

  7. loadrunner 技巧-模拟Run Logic中的随机Action运行

    技巧-模拟Run Logic中的随机Action运行 by:授客 QQ:1033553122   可以这样做,Run-time Settings,删除Action7,然后在其它Action比如Acti ...

  8. 算法 数组中出现次数最多的数字 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. 分页技巧__在项目中使用QueryHelper辅助对象实现分页效果

    分页技巧__在项目中使用QueryHelper辅助对象实现分页效果 QueryHelper 用于辅助拼接HQL语句 addCondition("t.type=?", "精 ...

随机推荐

  1. mysql补充(1)校对集utf8_unicode_ci与utf8_general_ci

    创建数据库并设置编码utf-8 多语言(补充1 2) create database mydb default character set utf8 collate utf8_general_ci; ...

  2. WPF的数据绑定详细介绍

    数据绑定:是应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定正确设置并且数据提供正确通知,则当数据的值发生更改时,绑定到数据的视觉元素会自动反映更改. 数据绑定可能还意味着如果视觉元素中数据的 ...

  3. [最新版]MJRefresh解析与详细使用指导

    俗话说 "工欲善其事,必先利其器",好的成熟的第三方,是我们开发路上的利器:俗话又说"君子生非异也,善假于物也"NB的人并不是生下来就和别人不一样,只是他们擅于 ...

  4. Spark函数详解系列之RDD基本转换

    摘要:   RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集   RDD有两种操作算子:         ...

  5. Working with Numbers in PL/SQL(在PL/SQL中使用数字)

    This article gives you all the information you need in order to begin working with numbers in your P ...

  6. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  7. 关于MemoryBarrier

    备注:OSG  OpenThread::Atomic.cpp中MemoryBarrier(); Atomic::operator unsigned() const { #if defined(_OPE ...

  8. ORACLE 视图的 with check option

    ORACLE 视图的 with check option 我们来看下面的例子: create or replace view testview as select empno,ename from e ...

  9. struts2必需jar包

    asm-3.3.jar                   commons-logging-1.1.3.jarasm-commons-3.3.jar           freemarker-2.3. ...

  10. .net 地址栏传中文乱码 的解决方法

    1.设置web.config文件. <system.web> ...... <globalization requestEncoding="gb2312" res ...