nodejs版,麻将智能机器人出牌算法

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

nodejs版,麻将智能机器人出牌算法。

简述

麻将,起源于中国,粤港澳及闽南地区俗称麻雀,

由中国古人发明的博弈游戏,娱乐用具,一般用竹子、骨头或塑料制成的小长方块,上面刻有花纹或字样,

北方麻将每副136张,南方麻将多八个花牌,分别是春夏秋冬,梅竹兰菊,共计144张。

项目

请加星收藏仓库地址,方便以后学习使用。

github地址

使用方法


# 下载
git clone https://github.com/wallace5303/nodejs-game.git

# 进入文件
cd nodejs-game/aiTable

# 安装
npm install

# 运行
node demo.js

demo内容

# 麻将牌所有对应的数字id,请查看配置文件:cardConfig.json

const outCardLogic = require('./outCardLogic');

// 手牌 1万,2万,3万,8万,8万,1条,5条
const cards = ['31' , '32', '33', '38', '38', '41', '45'];

// 选出一张最优牌
var outLogic = new outCardLogic();

// 第二个参数为万能牌,可选。
var card = outLogic.outAI(cards);

console.log("选出的最优牌是:%j", card); // 41(1条)

分类

字牌(合计28张)

花牌(合计8张)

序数牌(合计108张)

相关术语

麻将应对的五种标准状态,是“吃”、“碰”、“杠”、“听”、“胡”。在正式比赛中,五种状态的官方语言都是汉语,包括国际比赛。

牌型术语

胡牌公式

鬼牌

鬼牌的定义就是能够变成任意牌的牌,也叫万能牌。

案例分析

举个栗子,看看真实的人是怎么思考出牌的:

解决思路

从上面的例子可以看出来,打牌的过程,其实就是打完之后的牌面,胡牌概率最高。

所以,算法变成了评估牌面积分的算法,越高说明牌越好,也说明这副牌可以胡的概率更高。

评估方法

为了评价这副牌的积分,也就是胡牌的概率,我们可以给他再摸N张牌,看看胡牌情况。
参考如下示例,可以很直观得出牌面积分:1筒2筒3筒 > 1筒2筒3筒2条3条 > 1筒2筒3筒2条。

已经胡了,胡牌概率为1

只摸1张牌,那么只有当摸2条的时候,才会赢,胡牌概率为1/9*摸条的概率,有将。

只摸1张牌,那么只有当摸1条4条的时候,才会赢,胡牌概率为2/9*摸条的概率,无将。

表格生成

有了评估方法后,我们只需要对每个花色的手牌,分配N张牌给他,然后计算胡牌概率,就可以知道牌面积分。

不过考虑到计算量太大,所以我们可使用查表法,提前计算好,方便快速查找。

出牌算法

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看