作者joejoe321321 (鸱夷子皮)
看板MJ_JP
标题Re: [note] JP_MJ Programming Techniques (1)
时间Mon Jan 31 22:14:45 2011
原文恕删
这篇回文可能快偏离日麻讨论范畴了XD 还请一些版友见谅
看到这篇文章我还蛮高兴的,当初修课修AI的时候期末project就是写日麻AI设计,
本来的构想是在无视各家进攻下,做到能在14张牌中选择何者该舍去,是否吃碰杠等功能,
不过时间限制下当初只写出了如何舍牌,加上判断和了牌种等共约2000行code,
而且在路线机率的计算上是有问题的....也就因此没有再继续完成它
这篇文章给了我一个在计算机率上还不错的想法,感谢
提供一点个人想法,计算上听(向听?)数不一定要全数列出後逐一比对,
在假设13张牌中至少用到5张做为最後和了牌型时,
可以针对每张牌递回跑"顺子" "刻子" "雀头" "待舍"四种可能性就好,
在最後只能有4搭子1雀头的条件限制下,这方法其实出乎意料的快,
而且也同样能算出每种牌型的上听数及所需牌种,
不过用比对的方式,在预先将牌种都存在记忆体後,速度上应该还是优势的
计算役种和得点上,采高得点计的规则其实会带来不少麻烦,
总不能把绿一色当成混一2000点,或是把三连三暗刻记成一色三顺,
计算符数也会造成不小的困扰,不过都还是可以克服的问题
当初我们project的目标其实是想让AI能舍去1000点自摸,决定等四暗刻,
不过想一想这真的蛮困难,期望值的计算上还要考虑自摸,振听等因素,
最後我们只做到能让它懂得去做三色同顺,说起来还是弱弱的(汗)
我认同麻将上的AI,初步考虑上比很多游戏简单许多,
至少完全进攻形的AI就已经有不小的实力,估计在天凤打到初段可能也不是问题,
不过全方位考虑下就很困难了,就算假设对手没有特别偏好,不去做machine leraning,
就已经很难靠对手舍牌来推敲他手上的牌来避免放枪,
加上场况和得点差,1000点在不同的局势下影响又不一样,不是能只做线性影响思考的
举个好玩的例子,友人曾问我在没有张数,危险度差别下,发和中先打哪张较好,
答案是中,理由是"中成为里悬赏的机率比发低" orz
AI想写到完整实在是不简单的工作
----
版主是CS相关科系?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.187.169
1F:推 xtxml:嗯,我正好就是读CS所以对这个很有兴趣XD 01/31 22:29
2F:推 xtxml:话说你居然作业做日麻,真够热血的(拇指) 我想过但不敢做XD 01/31 22:34
3F:→ joejoe321321:我也是念CS的,做成project纯粹为了好玩啦XD 01/31 23:05
4F:推 m80126colin:我念CS的看完也感觉超好玩的!! 02/01 22:06
5F:推 refusekkk:我不太懂难不难..不过我手边有单机的日麻游戏档.. 02/04 10:04
6F:→ refusekkk:电脑不弱的说..会看现物 会默听..常常和大牌 02/04 10:05
7F:→ refusekkk: 我应该没有偏离你们说的吧... 02/04 10:06
8F:→ refusekkk:我已经看过电脑湖两次国士了 02/04 10:06
9F:推 st6012:你已经偏离了...拿单机游戏那种资讯不对等的东西来讲的话 02/04 12:39
10F:→ st6012:电脑不弱的原因最主要是电脑作弊... 02/04 12:39
11F:→ FosterIX:说作弊太过言重了,资讯不对等确实是一个考量点。 02/04 20:30
12F:→ FosterIX:简单来说,尽管是「随机」的说法, 02/04 20:30
13F:→ FosterIX:玩家只能看到自己所见之情况,电脑可见所有的情况之下, 02/04 20:31
14F:→ FosterIX:之中的差异性。 02/04 20:31
15F:→ FosterIX:或是一张张产生的方式,来引导或是造成差异性。 02/04 20:32
16F:→ joejoe321321:嗯,电脑方资讯完全透明的话是人打不赢的, 02/05 18:02
17F:→ joejoe321321:写AI是让电脑能在有相同资讯的情况下,做出等同甚至 02/05 18:02
18F:→ joejoe321321:比人更好的判断 我说的难是指防对方荣和这一项上, 02/05 18:04
19F:→ joejoe321321:很难用简单的标准或机率根据河底推出对方手上的牌 02/05 18:05